๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
SeSAC

[iOS] TIL_230728

by lizzydev 2023. 8. 1.

cell select vs gesture

ํ…Œ์ด๋ธ” ๋ทฐ์—์„œ๋Š” ํƒญ์ œ์Šค์ฒ˜๋กœ ํ‚ค๋ณด๋“œ๋ฅผ ์ž˜ ์•ˆ ๋‚ด๋ฆผ. ๋“œ๋ž˜๊ทธ ํ•ด์„œ ๋‚ด๋ฆผ.

ํ…Œ์ด๋ธ”๋ทฐ์— ์Šคํฌ๋กคํ•˜๋ฉด ํ‚ค๋ณด๋“œ ๋‚ด๋ ค๊ฐ€๋„๋ก ์‰ฝ๊ฒŒ ์„ค์ • ํ•  ์ˆ˜ ์žˆ์Œ.

ํ…Œ์ด๋ธ”๋ทฐ ์…€ ํฌ๊ธฐ

๋„ˆ๋น„: ๊ธฐ๊ธฐ์˜ ๋„ˆ๋น„

๋†’์ด: ์กฐ์ • ๊ฐ€๋Šฅ

๊ฐ„๊ฒฉ: ๋ฌด์กฐ๊ฑด ๋ถ™์–ด์žˆ์Œ ( ์ปฌ๋ ‰์…˜ ๋ทฐ๋Š” ๊ฐ€๋Šฅ . tableview์—์„œ ๋„์–ด์ ธ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒƒ์€ ์•ˆ์— uiview ๋„ฃ์–ด์„œ inset ์ค€ ๊ฒƒ → ์ด ๋ฐฉ๋ฒ•์€ ๊ทธ๋ฆผ์ž ๋„ฃ์„ ๋•Œ ๋ฌธ์ œ)

button image symbol ํฌ๊ธฐ ๋ฐ”๊พธ๊ธฐ

SFSymbol

iOS 13 ์ดํ›„ ๋“ฑ์žฅ. iOS 12์—์„œ๋Š” ์—์…‹ ์ถ”๊ฐ€ํ•ด์„œ ๋„ฃ์–ด์•ผํ•จ.

configuration์—์„œ font scale๋กœ ๋Œ€์‘ ๊ฐ€๋Šฅ

Cell์˜ ์ฒดํฌ ๋ฐ•์Šค๋Š” ๋ณดํ†ต ๋ฒ„ํŠผ ๋ง๊ณ  ์ด๋ฏธ์ง€๋ทฐ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๋„ํ•จ. ์…€์ž์ฒด๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ๋„ ์ฒดํฌ ํ• ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ–์„œ (ex. ๋ฐฐ๋‹ฌ์˜ ๋ฏผ์กฑ ๋ฉ”๋‰ด์ฒดํฌ)

TableViewCell

Cell Identifier๋ž‘ class ์ด๋ฆ„ ๊ฐ™๊ฒŒ ํ•ด์•ผ ํŽธํ•จ

didSelectRowAt

์…€ ํด๋ฆญ ํ–ˆ์„ ๋•Œ ํ˜ธ์ถœ ๋˜๋Š” ํ•จ์ˆ˜

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {         print(indexPath)     } 

Type Casting

ํƒ€์ž…๋ณ€ํ™˜(ํ˜•๋ณ€ํ™˜)

self: ๋„ˆ ์ž์‹ ์ด ๊ฐ€์ง„ ์ด๋ฆ„์ด์•ผ ํ•˜๊ณ  ์•Œ๋ ค์ฃผ๋Š” ์šฉ๋„

is : ํด๋ž˜์Šค๋ฅผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•œ ์—ฐ์‚ฐ์ž. ์–ด๋–ค ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ํƒ€์ž…์ธ์ง€ ํ™•์ธ

Any

[Any]์—๋Š” ์—ฌ๋Ÿฌํƒ€์ž… ๋‹ด์„ ์ˆ˜ ์žˆ์Œ.

element๋Š” [Any]์˜ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์™”๊ธฐ ๋•Œ๋ฌธ์— Any ํƒ€์ž…

Any์— Int ๋”ํ•˜๋ ค๋ฉด ์˜ค๋ฅ˜๋‚จ

Any ํƒ€์ž… ํ˜• ๋ณ€ํ™˜ํ•˜๊ธฐ

ํƒ€์ž… ์บ์ŠคํŒ…์„ ํ†ตํ•ด์„œ ์›ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •

Type Cast Operator

as (์—…์บ์ŠคํŒ…) : ๋ถ€๋ชจ๋กœ ๋ฐ”๊พธ๋Š”

as? as! (๋‹ค์šด์บ์ŠคํŒ…) : ์ž์‹์œผ๋กœ ๋ฐ”๊พธ๋Š”

as? ์˜ต์…”๋„ ๋ฐ˜ํ™˜ ํƒ€์ž… ⇒ ์‹คํŒจํ•  ๊ฒฝ์šฐ nil ๋ฐ˜ํ™˜

as! ์˜ต์…”๋„ ํƒ€์ž… ์•„๋‹˜ ⇒ ์‹คํŒจํ•  ๊ฒฝ์šฐ ๋ฌด์กฐ๊ฑด ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

Any vs AnyObject

Any : ๋ชจ๋“  ํƒ€์ž…์— ๋Œ€ํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์Œ

AnyObject : ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ์Œ

์ปดํŒŒ์ผ ์‹œ์ ์—์„œ๋Š” ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์—†๊ณ , ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ํƒ€์ž…์ด ๊ฒฐ์ •

ํ…Œ์ด๋ธ”๋ทฐ ๋ฐ์ดํ„ฐ Struct๋กœ ๋งŒ๋“ค๊ธฐ

cell ์„ค์ • ๋ถ€๋ถ„ cell์˜ ๋ฉ”์†Œ๋“œ๋กœ ๋งŒ๋“ค๊ธฐ

list ๋ณ€์ˆ˜(struct ๋ฐฐ์—ด)๋„ struct์— ๋„ฃ์–ด ์‚ฌ์šฉํ•˜๊ธฐ

ToDoInformation stuct ์ƒ์„ฑํ•˜์—ฌ ์•ˆ์—๋‹ค๊ฐ€ ๋„ฃ๊ธฐ

 

๋ณ€๊ฒฝ ํ›„

struct ํŒŒ์ผ๋กœ ๋‚˜๋ˆ„์–ด ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ

Class

ํž™ ์˜์—ญ์— ์ €์žฅ ๋จ.

name์ด let์ด์–ด์„œ ์˜ค๋ฅ˜๋‚จ. var์ธ count๋‚˜ size๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

  • drinkclass๋ผ๋Š” ๋ณ€์ˆ˜์™€ DrinkClass(name: “์•„์ƒท์ถ””, count:3300, size: .venti)๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฐ’์ด ๋‹ค๋ฅธ ๊ณณ์— ์ €์žฅ๋˜์–ด์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ.
  • drinkclass๋Š” DrinkClass(name: “์•„์ƒท์ถ””, count:3300, size: .venti)์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ. ๊ทธ๋ž˜์„œ drinkclass๊ฐ€ let์œผ๋กœ ์ž ๊ฒจ ์žˆ์–ด๋„ ์ฃผ์†Œ ๋”ฐ๋ผ๊ฐ„ Class ์•ˆ์˜ count๋‚˜ size ๋Š” var์—ฌ์„œ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Œ .

Struct

์Šคํƒ ์˜์—ญ์— ์ €์žฅ ๋จ.

struct๋Š” var์ธ count์™€ size ๋„ ๋ชป ๋ฐ”๊ฟˆ.

:struct๋ฅผ let์œผ๋กœ ๋งŒ๋“ค๋ฉด ์•ˆ์˜ ๋ณ€์ˆ˜๋“ค์ด ํ•œ๋ฒˆ์— ์ž ๊ฒจ์„œ ์ €์žฅ๋˜์–ด์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ → ๋ณ€์ˆ˜๋“ค ๋ชป ๋ฐ”๊ฟˆ

class ๋ฐ–์—์„œ ๋ณ€์ˆ˜ ์“ฐ๊ธฐ

์ „์—ญ๋ณ€์ˆ˜๋ผ ์–ธ์ œ ์–ด๋””์„œ๋“  ์ ‘๊ทผํ•ด์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ๊ฐ€๋Šฅ. ์•ฑ ์‹คํ–‰๋ถ€ํ„ฐ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋ฐ์ดํ„ฐ์˜์—ญ์— ์ €์žฅ๋˜์–ด์žˆ์Œ. but ๊ถŒ์œ ํ•˜์ง€ ์•Š์Œ.

์ง€์—ฐ ์ €์žฅ ํ”„๋กœํผํ‹ฐ lazy

lazy let ๋ถˆ๊ฐ€. ๋‚˜์ค‘์— ๊ฐ’์ด ๋“ค์–ด์˜ค๋ฏ€๋กœ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์„œ ๋ฌด์กฐ๊ฑด lazy var๋กœ ํ•ด์•ผ ํ•จ.

let์œผ๋กœ ์„ ์–ธ ๋˜์–ด ์žˆ๋Š” ์ƒ์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ ์ „์— ๊ฐ’์„ ํ•ญ์ƒ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•จ.

lazy ๋ณ€์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ์ด๋ฏธ ์ƒ์„ฑ ๋œ ์ดํ›„์— ๊ฐ’์ด ์“ฐ์ผ๋•Œ ๊ฐ’์ด ๋“ค์–ด๊ฐ.

๊ทธ๋ž˜์„œ var ๋งŒ ์“ธ ์ˆ˜ ์žˆ์Œ .

ํƒ€์ž… ํ”„๋กœํผํ‹ฐ

cell identifier ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ

๋‚˜์ค‘์— ๋” ์ข‹์€ ๋ฐฉ๋ฒ• ์•Œ๋ ค ์ฃผ์‹ค ๊ฒƒ

์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ, ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ

  • ๋ณ€์ˆ˜/ ์ƒ์ˆ˜,ํ•จ์ˆ˜๊ฐ€ class,struct,enum์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ํ”„๋กœํผํ‹ฐ,๋ฉ”์„œ๋“œ๋ผ๊ณ  ๋ถ€๋ฆ„
  • class,struct,enum๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์„œ(์ดˆ๊ธฐ๊ฐ’์„ ๋„ฃ์–ด์„œ) ๋งŒ๋“  ๊ฒƒ์„ ์ธ์Šคํ„ด์Šค
  • ์ด ์ธ์Šคํ„ด์Šค ์•ˆ์— ์žˆ๋Š” ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ, ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ผ๊ณ  ํ•จ.

ํƒ€์ž… ๋ฉ”์„œ๋“œ, ํƒ€์ž… ํ”„๋กœํผํ‹ฐ

: ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ํƒ€์ž… ํ”„๋กœํผํ‹ฐ์™€ ํƒ€์ž… ๋ฉ”์„œ๋“œ๋ผ๊ณ  ํ•˜๊ณ  ์•ž์— static์„ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉ ํ•จ.

์ €์žฅ ํ”„๋กœํผํ‹ฐ & ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ

์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ ์„ ์–ธํ•˜๋Š” ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๋Š” ์ €์žฅํ˜•์‹์ด๋ผ๊ณ  ๋ณด๋ฉด ๋จ. (์—ฐ์‚ฐ ์•„์ง ์•ˆ ๋ฐฐ์›€)

์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ, ํƒ€์ž… ํ”„๋กœํผํ‹ฐ ๋ชจ๋‘ ์ €์žฅ ๋ฒ„์ „, ์—ฐ์‚ฐ ๋ฒ„์ „์„ ๊ฐ€์ง

  • ์ €์žฅ ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ
  • ์ €์žฅ ํƒ€์ž… ํ”„๋กœํผํ‹ฐ
  • ์—ฐ์‚ฐ ์ธ์Šคํ„ด์Šค ํ”„๋กœํผํ‹ฐ
  • ์—ฐ์‚ฐ ํƒ€์ž… ํ”„๋กœํผํ‹ฐ

ex)

static let identifer : ์ €์žฅ ํ”„๋กœํผํ‹ฐ&ํƒ€์ž… ํ”„๋กœํผํ‹ฐ → ์ €์žฅ ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•จ.

'SeSAC' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[iOS] TIL_230801  (0) 2023.08.03
[iOS] TIL_230731  (0) 2023.08.03
[iOS] TIL_230727  (0) 2023.07.31
[iOS] TIL_230726  (0) 2023.07.31
[iOS] TIL_230725  (0) 2023.07.30