Skip to content

heydoy/memo-project-ios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒฑ MEMO

๐ŸŽ ๊ฐœ์„ ๋‚ด์šฉ

2022.10.24 > ๊ธฐ์กด ํ…Œ์ด๋ธ” ๋ทฐ๋ฅผ Compositional Layout + Diffable Datasource๋กœ ๋ณ€๊ฒฝ


๐Ÿ“ฑ ํ™”๋ฉด๊ณผ ๊ธฐ๋Šฅ, ๊ตฌํ˜„๋ฐฉ์‹

๐Ÿค— ์›ฐ์ปด ์Šคํฌ๋ฆฐ

UserDefaults์—์„œ Boolํƒ€์ž… ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ์•ฑ ์ฒซ์‹คํ–‰์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๊ณ  ์ฒ˜์Œ์ผ ๊ฒฝ์šฐ์—๋งŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

- ํ™˜์˜ ํŒ์—…
Simulator Screen Recording - iPhone 11 - 2022-09-05 at 01 54 20

๐Ÿ–Š ๋ฉ”๋ชจ ์ž‘์„ฑํ•˜๊ธฐ

  1. ๋ฉ”๋ชจ ์ž‘์„ฑ ์‹œ ์ฒซ๋ฒˆ์งธ ๊ฐœํ–‰๋ฌธ์ž๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” ํƒ€์ดํ‹€, ์ดํ›„๋Š” ์ฝ˜ํ…์ธ ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์™„๋ฃŒ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ๋’ค๋กœ๊ฐ€๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  2. ๋ฉ”๋ชจ ์ž‘์„ฑ ์‹œ ํ‚ค๋ณด๋“œ์™€ ๋ฐ” ๋ฒ„ํŠผ์ด ๋ชจ๋‘ ๋ณด์ž…๋‹ˆ๋‹ค.
  3. ๋‚ด์šฉ์ด ์—†์œผ๋ฉด ์ €์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  4. ๊ณต์œ  ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ž‘์„ฑ๋œ ๋‚ด์šฉ์ด Activity View ๋ฅผ ํ†ตํ•ด ๊ณต์œ ๋ฉ๋‹ˆ๋‹ค. (๋‚ด์šฉ์ด ์—†์„ ๊ฒฝ์šฐ ๊ณต์œ ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)
- ๋ฉ”๋ชจ ์ž‘์„ฑํ•˜๊ธฐ - ๋‚ด์šฉ์ด ์—†์œผ๋ฉด ์ €์žฅํ•˜์ง€ ์•Š๊ธฐ - ๋ฉ”๋ชจ ๊ณต์œ ํ•˜๊ธฐ
Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 21 04 Simulator Screen Recording - iPhone 11 - 2022-09-05 at 16 13 27 Simulator Screen Recording - iPhone 11 - 2022-09-05 at 16 13 56

๐Ÿ“ ๋ฉ”๋ชจ ์ˆ˜์ •ํ•˜๊ธฐ

  1. ๋ฆฌ์ŠคํŠธ์—์„œ ์…€์„ ์„ ํƒํ•˜๋ฉด ์ˆ˜์ •ํ•˜๊ธฐ๋กœ ๋„˜์–ด๊ฐ€๊ณ , ํ‚ค๋ณด๋“œ์™€ ๋ฐ” ๋ฒ„ํŠผ์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ์ˆ˜์ •์ฐฝ์—์„œ ํ•œ ๋ฒˆ ๋” ํƒญํ•˜๋ฉด ํ‚ค๋ณด๋“œ์™€ ๋ฐ” ๋ฒ„ํŠผ์ด ๋ณด์ž…๋‹ˆ๋‹ค.

- ๋ฉ”๋ชจ ์ˆ˜์ •
Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 26 30

๐Ÿงฉ ๋ฉ”๋ชจ ๋ฆฌ์ŠคํŠธ

  1. ์˜ค๋Š˜ ์ค‘์— ์ž‘์„ฑ๋œ ๋ฉ”๋ชจ๋Š” ์‹œ๊ฐ„, ์ฃผ์ค‘์— ์ž‘์„ฑ๋œ ๋ฉ”๋ชจ๋Š” ์š”์ผ, ๊ทธ ์™ธ์—๋Š” ๋…„์›”์ž…์ด ์ž…๋ ฅ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฉ”๋ชจ์˜ ๊ฐœ์ˆ˜๋Š” ๋ฐ”๋กœ ๋ฐ˜์˜๋˜์„œ ์œ„์— ๋œจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ 1์ฒœ๊ฐœ๊ฐ€ ๋„˜์„ ๊ฒฝ์šฐ ์„ธ์ž๋ฆฌ์ˆ˜๋งˆ๋‹ค ์‰ผํ‘œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  3. leadingSwipeAction์œผ๋กœ ๋ฉ”๋ชจ๋ฅผ ๊ณ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. trailingSwipeAction์œผ๋กœ ๋ฉ”๋ชจ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

- ๋ฉ”๋ชจ ๋ชฉ๋ก - ์Šค์™€์ดํ”„์•ก์…˜ - ํ•€ ๊ณ ์ • - ์Šค์™€์ดํ”„์•ก์…˜ - ์‚ญ์ œ
Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 36 14 Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 33 40 Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 34 56

๐Ÿ” ๊ฒ€์ƒ‰

  1. ๊ฒ€์ƒ‰์–ด์— ์ผ์น˜ํ•˜๋Š” ๋ฉ”๋ชจ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  2. ์ผ์น˜ํ•œ ๋ฌธ์ž์—ด์€ ์ƒ‰๊น”์ด ๋‹ค๋ฅด๊ฒŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  3. ๊ฒ€์ƒ‰์ฐฝ์—์„œ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ๋ฅผ ํด๋ฆญํ•ด๋„ ๋ฉ”๋ชจ ์ˆ˜์ •ํ•˜๊ธฐ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ๊ฒ€์ƒ‰ํ™”๋ฉด
Simulator Screen Recording - iPhone 11 - 2022-09-06 at 01 38 52

๐Ÿ’ญ ๋Œ์•„๋ณด๋ฉฐ

ํ‰์†Œ์—๋Š” ์ปค๋ฐ‹์ด๋‚˜ ๋ฌธ์„œ, ์ด์Šˆ์— ์ „ํ˜€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•˜๋Š”๋ฐ, ์ด๋ฒˆ์—๋Š” ์ตœ๋Œ€ํ•œ ๊ณผ์ •๊ณผ ์ฝ”๋“œ์™€ ์ปค๋ฐ‹์˜ ๋‹จ์œ„๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ด์Šˆ๋กœ ์ •๋ฆฌํ•˜๊ณ  ์ปค๋ฐ‹์„ ์ž˜๊ฐœ ์ชผ๊ฐœ๊ณ , ์ด์Šˆ ํ…œํ”Œ๋ฆฟ๊ณผ PR ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค๊ณ  ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์—๋„ ์‹ ๊ฒฝ์„ ์“ฐ๊ณ , ํด๋”๋ง๊ณผ ์ฃผ์„, ๊ตฌํ˜„ํ•˜๋ฉด์„œ๋„ ์ตœ๋Œ€ํ•œ ๋ฐฐ์šด ๊ฐœ๋…์„ ํ™œ์šฉํ•ด๋ณด์ž๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ์š”. ์†Œ์†Œํ•œ ์•„์‰ฌ์›€์€ ์ฐจ์น˜ํ•˜๊ณ ์„œ๋ผ๋„ ๋ฉ”๋ชจ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์ง์ „์— ๋ฐฐ์šด Observable ๊ทธ๋ฆฌ๊ณ  ์ ์šฉํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ DiffableDataSource์™€ Compositional Layout์„ ์จ๋ณด์ง€ ๋ชปํ•ด ํฐ ์•„์‰ฌ์›€์ด ๋‚จ์Šต๋‹ˆ๋‹ค.




๐Ÿ›  ๊ฐœ์„  ๋ฐฉํ–ฅ

  1. RX์™€ MVVM์„ ์ด์šฉํ•ด ๊ฐœ์„ ํ•˜๊ธฐ
  2. ์„น์…˜์— ๋„ˆ๋ฌด ์˜์กดํ•˜๋Š” ๋ถ€๋ถ„: ๊ฒ€์ƒ‰์ค‘์ด ์•„๋‹ ๋•Œ์—๋Š” ์•„์˜ˆ ์„น์…˜ 0์„ ๊ณ ์ •๋ฉ”๋ชจ ์˜์—ญ์œผ๋กœ ์žก์•„๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ณ ์ •๋ฉ”๋ชจ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ์œ„์— ๋นˆ ๊ณต๊ฐ„์ด ์ข€ ๋” ์ƒ๊ธด๋‹ค. ๋‹ค๋ฅธ ๊ณณ์—์„œ๋„ ์„น์…˜ 0์„ ๊ธฐ์ค€์ ์œผ๋กœ ์žก์•„๋‘์—ˆ๋Š”๋ฐ, ์ด๊ฑธ ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์œผ๋กœ ๋ฐ”๊ฟ”์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.
  3. ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ์™€ ์ ์šฉ๋˜๋Š” ๋ฌธ์ž์—ด์„ ๋ ˆ์ด๋ธ”์— ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก UILabel์— extension์œผ๋กœ ํ•ด๋‘์—ˆ๋Š”๋ฐ, ์˜คํžˆ๋ ค ๋ฒ”์šฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๊ฒŒ ๋˜์—ˆ๋‹ค. String ์— extension์œผ๋กœ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ Attributed String์„ ๋ฐ›์•„์˜ค๋Š” ํ˜•ํƒœ๋กœ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ๋‹ค.

๐Ÿ’ฆ ์‹ค์ˆ˜

  1. ํ•ด๊ฒฐํ•จ ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜์—ฌ ๊ฐ’์„ ์—ญ์ „๋‹ฌ ํ•  ๋•Œ: ์ž๊พธ ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ ํƒ€์ž…์— VC๋ฅผ ๋„ฃ์„ ์ˆ˜ ์—†๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋–ด๋Š”๋ฐ, ์•Œ๊ณ  ๋ณด๋‹ˆ var delegate = protocolName? ์œผ๋กœ ํ•ด๋‘” ๊ฒƒ... ๐Ÿคฆ ๋ชป ์ฐพ์•„์„œ ๊ฒ€์ƒ‰์œผ๋กœ 3์‹œ๊ฐ„ ํ—ค๋งธ๋‹ค.
  2. ํ•ด๊ฒฐํ•จ ํ”„๋กœํ† ์ฝœ ์ •์˜ํ•  ๋•Œ AnyObject๋ฅผ ์ฑ„ํƒํ–ˆ์ง€๋งŒ, ์•ฝํ•œ ์ฐธ์กฐ๋กœ ์„ ์–ธํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„ -> ์•ฝํ•œ ์ฐธ์กฐ์— ๋Œ€ํ•ด ์•ฝํ•œ ์ดํ•ด๊ฐ€ ์žˆ์—ˆ๋‹ค! ์ˆ˜์—…์œผ๋กœ ๋ฐฐ์›Œ์„œ ๋ฐ”๋กœ ์ ์šฉํ–ˆ๋‹ค!
  3. ํ•ด๊ฒฐํ•จ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ–ˆ๊ณ  ๋˜๋Š” ๊ฑธ ํ™•์ธํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ, ์ˆ˜์ • ๋ชจ๋“œ์—์„œ ๋ฐ”๋ฒ„ํŠผ ์•„์ดํ…œ๊ณผ ํ‚ค๋ณด๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ์•ˆ ์—†์–ด์ง€๋Š” ๊ฑธ ํ™•์ธํ•จ...๐Ÿฅฒ -> ์กธ๋ ค์„œ ์ฝ”๋“œ๋ฅผ ์ข€ ๋‚ ๋ ธ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ œ์ถœ ํ›„์— ์ˆ˜์ •ํ•จ (์ด์Šˆ #40)

๐Ÿคทโ€โ™€๏ธ ์ข€ ๋” ๊ณต๋ถ€ํ•˜๊ฑฐ๋‚˜ ์ฐพ์•„๋ณผ ๋ถ€๋ถ„

  1. Realm Object๋ฅผ ๋‹ค๋ฅธ ํ™”๋ฉด์œผ๋กœ ๋ณด๋‚ด์„œ, ๊ทธ๊ณณ์— ์„ ์–ธํ•œ repository๋ฅผ ์ด์šฉํ•˜๋ฉด ๋™์ผํ•œ write thread๊ฐ€ ์•„๋‹ˆ๋ผ์„œ ์ƒ๊ธฐ๋Š” ์—๋Ÿฌ. ์“ฐ๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์ด ์•„์ง ์–ด๋ ต๋‹ค.
  2. Done - searchController๋ฅผ ์ ์šฉํ•œ ์ƒํƒœ์—์„œ ์ž‘์„ฑํ•˜๊ธฐ๋ฅผ ํด๋ฆญํ•˜๋ฉด, ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ๋Š” ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”๊ฐ€ ์•ˆ์˜ ์•„์ดํ…œ ํฌ๊ธฐ์— ๋งž์ถฐ ์ž๋™์œผ๋กœ ์ค„์–ด๋“ค์ง€๋งŒ ์™œ ๋””๋ฐ”์ด์Šค์—์„œ๋Š” ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”๊ฐ€ ์ž๋™์œผ๋กœ ์•ˆ ์ค„์–ด๋“ค๊นŒ? -> prefersLargeTitle์„ false๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค. thx to @GoForWalk
  3. inset grouped์—์„œ ์„น์…˜ ํ—ค๋”๊ฐ€ ์…€์ด ์‹œ์ž‘ํ•˜๋Š” ์œ„์น˜์— ๊ฐ”์œผ๋ฉด ์ข‹๊ฒ ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ์˜ฎ๊ธธ์ง€.
  4. ์Šค์™€์ดํ”„ ์•ก์…˜ ์˜์—ญ์ด ๋„ˆ๋ฌด ํฐ ๊ฒƒ ๊ฐ™์€๋ฐ ๊ณต๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ์„๊นŒ? <- ์…€ ๋†’์ด๊ฐ€ ์ž‘์•„์„œ ๊ทธ๋ ‡๊ฒŒ ๋ณด์ด๋Š” ๊ฒƒ. ์Šค์™€์ดํ”„์•ก์…˜์—์„œ ๊ฐ€๋กœ๋กœ ์ฐจ์ง€ํ•˜๋Š” ์˜์—ญ ์ž์ฒด๋Š” ๋˜‘๊ฐ™๋‹ค!
  5. isEditing ์— ๋Œ€ํ•ด ์ข€ ๋” ์ฐพ์•„๋ณด๊ธฐ!

Releases

No releases published

Packages

No packages published