[iOS] NotificationCenter๋Š” ์ค‘์•™์šฐ์ฒด๊ตญ

์ €๋Š” ์–ธ์ œ๋‚˜ ๋น„๋™๊ธฐ ์ž‘์—…๋“ค์ด ๊ณจ์น˜ ์•„ํ”ˆ๋ฐ hoxy... ์—ฌ๋Ÿฌ๋ถ„๋„ ๊ทธ๋Ÿฌ์‹ ๊ฐ€์š”? ๋น„๋‹จ ํ†ต์‹ ๋‹จ์—์„œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•ฑ ๊ณณ๊ณณ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ๋“ค๋„ ๋ชจ๋‘ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐœ์ƒˆํ•ฉ๋‹ˆ๋‹ค. RxSwift์™€ Combine์„ ํ†ตํ•ด ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•œ๋‹ค๋ฉด ์ˆ˜์›”ํ•˜๊ฒŒ ํ•ด๊ฒฉํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ์˜ค๋Š˜์€ ๋” ๋ฒ ์ด์งํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณจ๋ผ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด ๊ฐ„ ์†Œํ†ต์ด ์ด๋ฃจ์–ด์งˆ ๋•Œ 3๊ฐ€์ง€ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ขNotification โ€ขDelegation โ€ขKVO ์˜ค๋Š˜์€ ์ด ์ค‘์—์„œ๋„ Notification์„ ๊ณจ๋ผ๋ดค์Šต๋‹ˆ๋‹ค! ๊ธ€์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—... Swift3 ์ด์ „๊นŒ์ง„ NSNotificationCenter๋ผ๊ณ  ๋ถˆ๋ ธ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ StackOverflow๋‚˜ Medium ๋“ฑ ์˜ˆ์ „ ๊ธ€์—์„œ๋Š” NSNotificatio..

iOS 2021. 7. 27. 17:53
[๋‚˜๋Š” ์ธํ„ด 7] ๊ฐœ๋ฐœ์ž ์ธํ„ด, ์ด๋Ÿฐ ์ผ์„ ํ•˜๊ณ  ์žˆ๋‹ค

Tistory์—๋Š” ์š”์•ฝ๋ณธ์ด ์˜ฌ๋ผ ์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „๋ฌธ ๋ฐ Syntax Highlighting์œผ๋กœ ํŽธํ•˜๊ฒŒ ์ฝ๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ์„œ ์ฝ์œผ์‹œ๋ฉด ๋˜์–ด์œ ~ [๋…ธ์…˜ ๋ฐ”๋กœ๊ฐ€๊ธฐ] 2021๋…„ 3์›” 15์ผ๋ถ€ํ„ฐ 6์›” 14์ผ๊นŒ์ง€ 3๋‹ฌ ๋™์•ˆ ์ธํ„ด ์ƒํ™œ์„ ํ•˜๋ฉฐ ์–ด๋–ค ์ผ์„ ํ–ˆ๊ณ  ๋‚œ ์–ด๋–ป๊ฒŒ ์„ฑ์žฅํ–ˆ์„๊นŒ? Phase 1 - Prototyping, Authentication+Tech ์ฒซ ๋‹ฌ ๋™์•ˆ ํ•˜๊ฒŒ ๋œ ์ผ์€ ํ›„์— ํ•ฉ๋ฅ˜ํ•˜์‹ค iOS ๊ฐœ๋ฐœ์ž ๋ถ„๋“ค์˜ ๊ฐ€์ด๋“œ(?)๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ํ˜„ ์•ฑ์˜ ํ”„๋กœํ† ํƒ€์ดํ•‘ ์ด์—ˆ๋‹ค. ๋ถ€์บ ์—์„œ ์ˆ˜๋„ ์—†์ด ํ–ˆ์ง€๋งŒ ๊ทธ ๋•Œ์™€ ์ง€๊ธˆ์€ ์ƒํ™ฉ๋„, ๋งˆ์Œ๊ฐ€์ง๋„, ๊ฐœ๋ฐœ ๋ชฉ์ ๋„ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ๋ชฉ์ ์ด ๋‹ฌ๋ผ ๋Š๋ผ๊ณ  ๋ฐฐ์šด ์ ์ด ๋‹ค๋ฅด๋‹ค. ๋” ์ด์ƒ ๋™๋ฃŒ ์บ ํผ๋“ค์ด ์•„๋‹Œ ํ˜„์—… ๊ฐœ๋ฐœ์ž๋“ค๊ณผ ํ•จ๊ป˜ ํ•ด์„œ ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ์•„๋งˆ ๋ฉ˜ํ† ๋‹˜๊ณผ์˜ ..

SUEATY/๊ธฐ๋ก 2021. 5. 17. 18:17
[Rx] Reusable Cell์˜ ํ”์ ์ด ๋‚จ๋Š”๋‹ค

Tistory์—๋Š” ์š”์•ฝ๋ณธ์ด ์˜ฌ๋ผ ์™€ ์žˆ์Šต๋‹ˆ๋‹ค. Syntax Highlighting์œผ๋กœ ํŽธํ•˜๊ฒŒ ์ฝ๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค์€ ์—ฌ๊ธฐ์„œ ์ฝ์œผ์‹œ๋ฉด ๋˜์–ด์œ ~ [๋…ธ์…˜ ๋ฐ”๋กœ๊ฐ€๊ธฐ] ๋ฌธ์ œ ์ƒํ™ฉ ๊ฐ cell๋งˆ๋‹ค Image์™€ Like Button์ด ์กด์žฌํ•œ๋‹ค. ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ํ•˜๋ฉฐ ๋ชจ๋ธ์„ ๋ณ€๊ฒฝ์‹œํ‚ค๊ณ  ๊ทธ์— ๋งž๊ฒŒ ๋ทฐ์—์„œ๋„ Background Color, Text๋ฅผ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ƒํƒœ ๋ณ€๊ฒฝ ์ดํ›„ ์Šคํฌ๋กค์„ ํ•˜๋ฉด cell์ด ์žฌ์‚ฌ์šฉ๋˜๋ฉด์„œ ๋‹ค๋ฅธ ์‚ฌ์ง„์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฒ„ํŠผ์€ ์—ฌ์ „ํžˆ ๋นจ๊ฐ„์ƒ‰์ธ ๊ฒƒ์ด ๋ฌธ์ œ๋‹ค. ์›๋ž˜๋Š” ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š์•˜๋˜๊ฐ€? func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if let cell = tabl..

iOS 2021. 5. 17. 11:58
[Rx] UITableViewCell ๋ฐ€์–ด์„œ ์‚ญ์ œ

Rx ver. ์ด๋ผ๊ณ  ์ œ๋ชฉ์— ์จ ๋†“์œผ๋‹ˆ ๋ˆ„๊ฐ€ ๋ณด๋ฉด ๋‹ค๋ฅธ ๋ฒ„์ „๋„ ์žˆ๋Š” ์ค„ ์•Œ๊ฒ ๋„ค ํ‚คํ‚ค ์ด๋ฒˆ ๊ธ€์€ ์‚ฌ์‹ค ๋ณ„ ๊ฑด ์•„๋‹ˆ๊ณ , RxSwift๋กœ reactive ํ•˜๊ฒŒ ์งœ๋Š” ์—ฐ์Šต ์ค‘์— ๋„ˆ๋ฌด ๋‹น์—ฐํ•˜๊ฒŒ ์“ฐ๋˜ ์ฝ”๋“œ๊ฐ€ ์•ˆ ๋จน์–ด์„œ ๋‹นํ™ฉํ–ˆ์ง€๋งŒ ๋ถ„๋ช… ๋‚˜ ๊ฐ™์€ ๋ชฝ์ธ™์ด๊ฐ€ ํ˜ผ์ž๋Š” ์•„๋‹ ๊ฒƒ ๊ฐ™์•„์„œ ์“ด๋‹ค. ์ „์ฒด ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด ์ผ๋ฃจ์™€์œ . ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, ์ฝ”๋“œ๋ฅผ Reactiveํ•˜๊ฒŒ ์ž˜ ์งœ ๋†“์•˜๋‹ค๋ฉด ์•Œ.์•„.์„œ ์ž˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์ฃผ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ. (ํžŒํŠธ๋ฅผ ์–ป์—ˆ๋‹ค๋ฉด ๊ฐ€์„œ ๊ณ ์น˜์‹œ๊ณ , ์•„๋‹ˆ๋ผ๋ฉด ์ญ‰ ๊ฐ™์ด ๋ณด์‹œ์ฃฑ!) non-RX Way ๊ธฐ์กด์— tableview swipe to delete cell ์„ ํ•˜๋Š” ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. (์ฐธ๊ณ ) override func tableView(_ tableView: UITableView, commit editin..

iOS 2021. 5. 13. 15:04
[Swift] Struct์™€ Class ๋น„๊ตํ•˜๊ธฐ

Swift & Struct์™€ ๊ด€๋ จ๋œ ๋ฉด์ ‘ ์งˆ๋ฌธ Struct์™€ Class์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ์–ธ์ œ ๊ฐ๊ฐ์„ ์“ฐ๋ฉด ์ข‹์„์ง€ ์„ค๋ช…ํ•ด๋ณด์„ธ์š” Struct๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค struct์™€ class์˜ ๋น„๊ต๋Š” ๋งŽ์€ interview referene์—์„œ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ž˜ ์•Œ์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฐ•๋ฐ•์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๊ผฌ๋ฆฌ์— ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ ์ˆ˜ ์žˆ๋Š” Struct์™€ Class์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Struct & Class Struct Class ์ •์˜ ํƒ€์ž…์ด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ํŠน์ • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ์ผ์ข…์˜ ํ‹€ ํƒ€์ž… ๊ฐ’ ํƒ€์ž… (value type) ์ฐธ์กฐ ํƒ€์ž… (reference type) ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ stack heap ๊ณตํ†ต์  ๋‚ด๋ถ€์— prope..

iOS 2021. 5. 6. 15:25
[๋‚˜๋Š” ์ธํ„ด 6] ์šฐ๋ฆฌ๋ผ๋ฆฌ ๊ฐœ๋ฐœ ≠ ๊ฐ™์ด ๊ฐœ๋ฐœ

(์‚ฌ์ง„์€... ๋‚˜๋‘ SLASH21 ์ฐธ์—ฌํ–ˆ๋‹ค...๊ตฌใ…Ž ์•„๋‹ˆ ๋“ค์—ˆ๋‹ค๊ตฌ,,,ใ…Ž) ์ง€ํ‚ค๋Š”๊ฒŒ ์ข‹๋‹ค๊ณ  ๋ฐฐ์› ์ง€๋งŒ ์šฐ๋ฆฌ๋ผ๋ฆฌ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ํฌ๊ฒŒ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์€ ๊ฒƒ๋“ค์ด ์กฐ์ง์—์„œ ํ•จ๊ป˜ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ์ค‘์š”ํ•œ ๊ฒƒ๋“ค์ด ์žˆ๋”๋ผ. 1. PR๊ณผ commit ๋‹จ์œ„๋Š” ์™„์„ฑ ๋œ ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ ค์•ผ ํ•จ ์˜›๋‚ ์—๋Š” ์ž์ž˜ํ•œ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋”๋ผ๋„ ์ผ๋‹จ ์ปค๋ฐ‹ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ์— ์˜์˜๋ฅผ ๋’€๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ง€๊ธˆ ์ƒ๊ฐํ•˜๋ฉด ์™œ ๊ทธ๋žฌ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ. ํ•˜์ง€๋งŒ ์–ธ์ œ๋“ ์ง€ ์ œ 3์ž๊ฐ€ ํŠน์ • PR ๋˜๋Š” ํŠน์ • commit์˜ ์ฝ”๋“œ๋ฅผ ๋ฐ›์•„ ๋ณผ ์ˆ˜ ์žˆ์Œ์„ ์—ผ๋‘ํ•ด์•ผ ํ•œ๋‹ค. ๋‹น์žฅ ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋„ ์–ด๋–ค ๊ธฐ๋Šฅ์˜ ๋ณ€ํ™”๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ์ด 3๊ฐœ ๋ฒ„์ „์˜ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด ๋ฐ›์•„ ๋ณด์•˜๊ณ  ์‹คํ–‰์‹œ์ผฐ๋‹ค. ๋งŒ์•ฝ ๋ฏธ์™„์„ฑ ๋œ ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ ค๋†จ๋‹ค๋ฉด ๋” ๋งŽ์€ ์„ค๋ช…์„ ํ•„์š”๋กœ ํ–ˆ๊ฒ ์ง€. 2. ์•Œ์•„์„œ ์ž˜ ํ•ด์คฌ๊ฒ ์ง€ ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋ง๊ธฐ ์—ฌํƒœ๊นŒ์ง€๋Š” ์•ž..

SUEATY/๊ธฐ๋ก 2021. 5. 4. 14:38
[Rx] PHPhotoLibrary ์ฒซ ์Šน์ธ ์ดํ›„ ๋ฐ”๋กœ ์•จ๋ฒ” ์•ˆ๋œจ๋Š” ๋ฌธ์ œ

ํ˜ผ์ž ๋งŒ์ง€์ž‘ ๊ฑฐ๋ฆฌ๊ณ  ์žˆ๋Š” ํ† ์ด ํ”„๋กœ์ ํŠธ์—์„œ ํ•ด๊ฒฐ ๋ชปํ•˜๊ณ  ์žˆ๋˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ์ ๊ทน์ ์œผ๋กœ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์˜ค๋Š˜ Rx ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ๊ทธ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•„์„œ ๊ณต์œ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ ๋ฌธ์ œ ์ƒํ™ฉ๋ถ€ํ„ฐ ๋ณด๊ณ  ๊ฐ€์‹ค๊นŒ์—ฌ. ์•„๋‹ˆ์ง€, ์ผ๋‹จ ์ปคํ”ผ ๋ถ€ํ„ฐ. ๋ฌธ์ œ์ƒํ™ฉ ์‚ฌ์šฉ์ž์˜ ์‚ฌ์ง„์ฒฉ์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ์ตœ์ดˆ ์ ‘๊ทผ ์‹œ๋„์—์„œ ์ €๋ ‡๊ฒŒ ์Šน์ธ์„ ๋ฐ›์•„์•ผ ํ•˜์ฃ . ๊ทธ๋Ÿฐ๋ฐ ์™ผ์ชฝ์—์„œ ์Šน์ธ์„ ํ•ด์ค˜๋„ ์˜ค๋ฅธ์ชฝ ํ™”๋ฉด ์ฒ˜๋Ÿผ ๋ฐ”๋กœ ์‚ฌ์ง„๋“ค์ด ๋œจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์‚ฌ์ง„์ฒฉ์„ ๋ˆŒ๋Ÿฌ์•ผ ๋œจ๋”๋ผ๊ตฌ์š”. ์ด ๋ฌธ์ œ๋ฅผ (ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ฐพ์œผ๋‹ˆ๊นŒ ๋‚˜์˜ค๊ธด ํ•˜๋˜๋ฐ ์™œ ์•ˆ์ฐพ์•„๋ดค์—ˆ์ง€ ํ‚คํ‚ค) Rx๋กœ ํ•ด๊ฒฐํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์›์ธ ํ˜„์žฌ๋Š” photos ๋ณ€์ˆ˜์— ์‚ฌ์ง„๋“ค์„ load ํ•˜์ง€๋งŒ '์Šน์ธ' ๊ณผ์ •์„ ๊ฑฐ์น˜๊ณ  reload ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด reload๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉด ๋˜๊ฒ ๋„ค์š”..

iOS 2021. 4. 22. 12:25
[Firebase] Firestore โ‘ก Firestore์˜ ๊ตฌ์กฐ

2021/01/19 - [Firebase] Firestore โ‘  NoSQL Database๋ž€ 2021/01/20 - [Firebase] Firestore โ‘ก Firestore์˜ ๊ตฌ์กฐ ์ง€๋‚œ ๊ธ€์—์„œ๋Š” NoSQL database์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€๋ถ€ํ„ฐ๋Š” ๋ณธ๊ฒฉ์ ์œผ๋กœ Cloud Firestore์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์€ Cloud Firestore์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. NoSQL์ด ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด์‹œ๋‹ค๋ฉด ์ง€๋‚œ ๊ธ€์„ ํ›‘์–ด๋ณด๊ณ  ์˜ค์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Firebase์˜ ๊ณต์‹ ์œ ํŠœ๋ธŒ์—์„œ ์ œ๊ณตํ•˜๋Š” ์˜์ƒ์„ ๋ฒˆ์—ญํ–ˆ๊ณ  ์ปคํ”ผ ํ•œ ์ž”์€ ์™€๋ฐฉ ํฐ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค? ๊น”๊น”>< ํ˜น์‹œ๋‚˜ ์˜ค๋ฅ˜ ๋ฐœ๊ฒฌ ์‹œ ๋Œ“๊ธ€๋กœ ๊ผญ ๋ง์”€ํ•ด์ฃผ์„ธ์š”! ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? ์ผ๋‹จ ๊ฒฐ๋ก  ๊ธ‰ํ•  ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋ณด๊ณ  ๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค...