hoyoungmoon / SwiftSimpleMemo

Simple memo app with UIKit & SwiftUI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SwiftSimpleMemo ๐Ÿ—“๏ธ

Simple memo app with UIKit & SwiftUI

TODO

๊ธฐ๋ณธ ๊ธฐ๋Šฅ

  • ๋ฉ”๋ชจ ๋ฆฌ์ŠคํŠธ
  • ๋ฉ”๋ชจ ๋“ฑ๋ก
  • ๋ฉ”๋ชจ ์‚ญ์ œ
  • ๋ฉ”๋ชจ ์ˆ˜์ •
  • ์Šคํ† ๋ฆฌ์ง€ ์ €์žฅ
  • ๋ฉ”๋ชจ ๊ณต์œ 

์ถ”๊ฐ€ ๊ธฐ๋Šฅ

  • ์ด๋ฏธ์ง€ ๋ฉ”๋ชจ ๋“ฑ๋ก
  • ์ƒ์„ธ๋ณด๊ธฐ์—์„œ ์ด๋ฏธ์ง€ ์Šค์™€์ดํผ ๊ตฌํ˜„
  • ๋ฉ”๋ชจ ์ •๋ ฌ

Today I Learned

  • ๋ฐ์ดํ„ฐ ๊ฐฑ์‹ 

    • ViewController ๋ฉ”์†Œ๋“œ viewWillAppear - iOS13๋ถ€ํ„ฐ default๋กœ ์ง€์›ํ•˜๋Š” sheet ํ˜•ํƒœ์—์„œ๋Š” viewWillAppear๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
    • Notification (Observer pattern)
  • Storyboard์—์„œ constraint๋ฅผ ์ฃผ์ง€ ์•Š์€ ๊ณณ์ด ์žˆ์œผ๋ฉด ๋นจ๊ฐ„์ƒ‰ ๋ผ์ธ์ด ๋œฌ๋‹ค

  • Core Data

    • ๋‹จ๋ง๊ธฐ ๋‚ด๋ถ€์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์กด, ์บ์‹ฑํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

    • UI ๋ธ”๋ฝ์„ ์ผ์œผํ‚ค๋Š” ํ…Œ์Šคํฌ๋“ค์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Œ

    • ๋ทฐ(ํ…Œ์ด๋ธ”๋ทฐ, ์ฝœ๋ ‰์…˜๋ทฐ๋“ฑ)์™€ ๋ฐ์ดํ„ฐ๊ฐ„์˜ ์‹ฑํฌ๋ฅผ ๋งž์ถ”๋Š” ๊ฒƒ์— ๋„์›€์„ ์คŒ

    • DB ๊ด€๋ฆฌ๊ฐ€ ๋”ฐ๋กœ ํ•„์š” ์—†์ด ๋ฐ์ดํ„ฐ CRUD๋ฅผ ์‰ฝ๊ฒŒ ํ•ด์ฃผ๊ณ  ๋ฒ„์ „ ๊ด€๋ฆฌ์— ์šฉ์ด

    • Core Data Stack

      • Core Data Model์„ ์ƒ์„ฑ ํ›„ ์ด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋“ค์ด ์žˆ์œผ๋ฉฐ ์ด๋ฅผ Core Data Stack์ด๋ผ ์นญํ•œ๋‹ค.
      • NSPersistentContainer model, context, coordinator๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง„ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค
  • Delegate

    • ์œ„์ž„(Delegation)์€ ํด๋ž˜์Šค ๋˜๋Š” ๊ตฌ์กฐ์ฒด๊ฐ€ ์ฑ…์ž„์˜ ์ผ๋ถ€๋ฅผ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค์— ๋„˜๊ฒจ์ฃผ๋„๋ก ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด
    • delegate ๊ตฌํ˜„ ๋ฐฉ๋ฒ•
      • storyboard
      • extension์„ ํ†ตํ•œ ํ”„๋กœํ† ์ฝœ ํ™•์žฅ
  • Escaping Closure (Swift)

    • ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋œ closure ์ค‘ ํ•จ์ˆ˜๊ฐ€ ๋ฆฌํ„ด๋˜์–ด ์Šค์ฝ”ํ”„๊ฐ€ ์‚ฌ๋ผ์ง€์ง€๋งŒ ์Šค์ฝ”ํ”„๋ฅผ escapingํ•˜์—ฌ ํ•จ์ˆ˜ ์ข…๋ฃŒ ํ›„์—๋„ ๋ฐ”๊นฅ์˜ ๋ณ€์ˆ˜์— ์ €์žฅ๋˜์–ด ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜
      ์˜ˆ๋ฅผ ๋“ค์–ด ๋น„๋™๊ธฐ์  ์ž‘์—… ์ฒ˜๋ฆฌ ํ›„ ์™„๋ฃŒ๊ฐ€ ๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ์™„๋ฃŒ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์„ ๋•Œ ํƒˆ์ถœ ํด๋กœ์ €๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • self๋ฅผ ํƒˆ์ถœ ํด๋กœ์ €์—์„œ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ self๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜ ์บก์ณ ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ์‹œ์ผœ์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ํƒˆ์ถœ ํด๋กœ์ €์˜ ๊ฒฝ์šฐ ๊ฐ•ํ•œ ์ฐธ์กฐ์— ์˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฆญ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก weak reference๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์บก์ณ ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ์‹œ์ผœ์•ผํ•œ๋‹ค.
  • ๊ฐ•ํ•œ ์ฐธ์กฐ ์‚ฌ์ดํด (Swift)

    • 2๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค ๊ฐ„์˜ ๊ฐ•ํ•œ ์ฐธ์กฐ์— ์˜ํ•ด ๋ณ€์ˆ˜๋ฅผ nil๋กœ ์„ ์–ธํ•˜์—ฌ๋„ ARC๊ฐ€ 0์œผ๋กœ ๋˜์ง€ ์•Š์•„ ํ• ๋‹น ํ•ด์ œ๊ฐ€ ๋˜์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ

    • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

      1. ์•ฝํ•œ ์ฐธ์กฐ ์‚ฌ์šฉ
        weak ํ‚ค์›Œ๋“œ๋ฅผ ์„ ์–ธ ์ „์— ์œ„์น˜์‹œํ‚จ ๋ณ€์ˆ˜ ๋˜๋Š” ํ”„๋กœํผํ‹ฐ์— ํ• ๋‹น๋œ ์ธ์Šคํ„ด์Šค๋Š” ์•ฝํ•œ ์ฐธ์กฐ๋ฅผ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ•ํ•˜๊ฒŒ ์ฐธ์กฐํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ nil๋กœ ์„ ์–ธํ•˜์˜€์„ ๋•Œ ARC๊ฐ€ ์ฐธ์กฐ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์ค‘์ง€ ํ•˜์ง€ ์•Š๊ณ  ํ• ๋‹น ํ•ด์ œ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

      2. ๋ฏธ์†Œ์œ  ์ฐธ์กฐ ์‚ฌ์šฉ
        weak reference์™€ ๋‹ค๋ฅด๊ฒŒ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ธ์Šคํ„ด์Šค์˜ ์ˆ˜๋ช…๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ๊ธด ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค. ์•ฝํ•œ ์ฐธ์กฐ์™€ ๋‹ฌ๋ฆฌ ํ•ญ์ƒ ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๋กœ ์˜ˆ์ƒ๋  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

About

Simple memo app with UIKit & SwiftUI


Languages

Language:Swift 100.0%