profile
๊ฒŒ๋ฐœ์ž๐Ÿฆ€ ๋˜๋Š” ์ค‘.. ๊ถ๊น€ํ•˜๋‹ค.. ๊ถ๊น€ํ•ด..
post-thumbnail

[iOS/Swift] MVVM

ํฐ์ผ์ด๋„ค..

2022๋…„ 3์›” 25์ผ
ยท
1๊ฐœ์˜ ๋Œ“๊ธ€
post-thumbnail

[iOS/Swift] Escaping Closure

ํ•œ์ค„ ์š”์•ฝ : ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๊ณ  ๋‚˜์„œ ์‹คํ–‰๋˜๋Š” ํด๋กœ์ €.(๋ˆ„๊ตฐ๊ฐ€๋Š” ํ•ด์ฃผ๊ฒ ์ง€..)

2022๋…„ 3์›” 25์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
post-thumbnail

[iOS/Swift] Localization

๊ทธ๋ž˜์š”. ๋ฐ”์œ ์™€์ค‘์— ์ฑ™๊ฒจ๋ดค๋˜ ์—ด๋ฐ›๋Š” ์ค‘๊ตญ ๋™๋„ค ์ฒด์ „์ด ๋์ด ๋‚ฌ์๋‹ˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ์˜ค๋žœ๋งŒ์— ํฌ์ŠคํŒ…์„ ํ•˜๋Ÿฌ ์™”์–ด์š”..์ง€๋‚œ ํฌ์ŠคํŒ…์˜ ์ธ๊ธฐ์— ๋ถ€๋‹ด๊ฐ์„ ๋ˆ„๋ฅด์ง€ ๋ชปใ…Žใ…๊ณ  ์€ํ‡ดํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ ๋Œ์•„์™€๋ดค์๋‹ˆ๋‹ค. ์ด์ œ ์–ด๊ทธ๋กœ JAJE ํ• ๊ฒŒ์š”~!~!์ž ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ๋‹ค๊ตญ์–ด ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Loca

2022๋…„ 2์›” 20์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
post-thumbnail

[iOS/Swift] ์บ์‹œ ์ถฉ์ „ํ•˜๋Ÿฌ ๊ฐ€์ž

์š”๋Ÿฐ ๋ฐฉ๋ฒ•์œผ๋กœ๋‹ค๊ฐ€ ์ถฉ์ „ํ•ด์„œ ํ—ค๋„ค์‹œ์Šค์—์„œ ๊ฐ‘๋ถ€์˜ ์‚ถ์„ ์‚ด์•˜์—ˆ๋‹คใ…‹๋‹ค์Œ์— ์•Œ์•„๋ณด์ž..

2022๋…„ 1์›” 13์ผ
ยท
38๊ฐœ์˜ ๋Œ“๊ธ€

API

์ด์ƒˆ๊ธฐ๋Š” ๋˜ ๋ชฐ๊นŒ..

2022๋…„ 1์›” 5์ผ
ยท
13๊ฐœ์˜ ๋Œ“๊ธ€
post-thumbnail

Dynamic Type

: ์• ํ”Œ ๊ณต์‹๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด, Dynamic Tpye์€ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ํ…์ŠคํŠธ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์„œ ์–ดํ”Œ์—๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ์„ค๋ช…๋˜์–ด์žˆ๋‹ค. ์‹œ๋ ฅ์ด ๋‚ฎ์€ ์‚ฌ์šฉ์ž๋“ค์„ ์œ„ํ•ด์„œ Dynamic Type์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค.: ์• ํ”Œ์€

2021๋…„ 12์›” 12์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

21. 11. 17 Not ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž

Bool

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

21. 11. 15 LLDB

LLVM front-end debugger ๋””๋ฒ„๊ฑฐ ๋„๊ตฌ๋‹ค..!@์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์–ธ์–ด๋ฅผ LLVM ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ƒ๊ธฐ๋Š” ์–ด์ฉŒ๊ตฌ,,์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๋‹จ๊ณ„ ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋‚˜ ๋ฒ„๊ทธ๋ฅผ ์ฐพ์•„๋‚ด๊ณ  ๊ทธ ์›์ธ์„ ๋ฐํžˆ๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…๊ณผ์ •์–ธ์–ด โ†’ ์–ธ์–ด๋กœ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๊ณผ์ •์›

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
post-thumbnail

21. 11. 09 Unit test, Double stack

: ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์†Œ์Šค ์ฝ”๋“œ์˜ ํŠน์ • ๋ชจ๋“ˆ์ด ์˜๋„๋œ ๋Œ€๋กœ ์ •ํ™•ํžˆ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ์ ˆ์ฐจ. ๋ชจ๋“  ํ•จ์ˆ˜์™€ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ test case๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ๋งํ•œ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ! ์œ ๋‹› ํ…Œ์ŠคํŠธ์˜ ์žฅ์ ํ•ด๋‹น ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ๋…๋ฆฝ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

21. 11. 08 ์ž๊ตฌ์•Œ

๋ฌธ์ œํ•ด๊ฒฐ์„ ์œ„ํ•œ ์ ˆ์ฐจ/ ๋ฐฉ๋ฒ• (์—ฌ๋Ÿฌ ๋™์ž‘๋“ค์˜ ๋ชจ์Œ) ex) ํ…ŒํŠธ๋ฆฌ์Šค์ฒ˜๋Ÿผ ๋ฌธ์ œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋Š” ๋Š๋‚Œ, ์—ฌํ–‰๊ฐ€๋ฐฉ์„ ๊พธ๋ฆด ๋•Œ, ํ•„์š”ํ•œ ๊ฒƒ์„ ์–ด๋–ค ์ˆœ์„œ๋Œ€๋กœ ๋„ฃ์„์ง€ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค ๋Œ€ํ‘œ์  ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์ •๋ ฌ, ํƒ์ƒ‰, ์žฌ๊ท€ ๋“ฑ (์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต์˜์ƒ

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

21. 11. 07 Protocol, Delegation

Protocol โ†’ ๋ฉ”์„œ๋“œ, ํ”„๋กœํผํ‹ฐ ๊ทธ๋ฆฌ๊ณ  ํŠน์ • ์ž‘์—…์ด๋‚˜ ๊ธฐ๋Šฅ์˜ ๋ถ€๋ถ„์ด ์ ํ•ฉํ•œ ๋‹ค๋ฅธ ์š”๊ตฌ์‚ฌํ•ญ์˜ ์ฒญ์‚ฌ์ง„์„ ์ •์˜ํ•œ๋‹ค. ํ”„๋กœํ† ์ฝœ์€ ์š”๊ตฌ์‚ฌํ•ญ์˜ ๊ตฌํ˜„์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด ๋˜๋Š” ์—ด๊ฑฐํ˜•์— ์˜ํ•ด ์ฑ„ํƒ๋  ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœํ† ์ฝœ์˜ ์š”๊ตฌ์‚ฌํ•ญ์— ์ถฉ์กฑํ•˜๋Š” ๋ชจ๋“  ํƒ€์ž…์€ ํ”„๋กœํ† ์ฝœ์„

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

21. 11. 06 Generic

๋ญ”๊ฐ€ ํฌ๊ด„์ ์ด๊ณ  ์ผ๋ฐ˜์ ์ผ ๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ์  ๋Š๋‚Œ..generic์€ Swift์˜ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ค‘ ํ•˜๋‚˜! Swift ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋Œ€๋ถ€๋ถ„์€ Generic์œผ๋กœ ์ž‘์„ฑ๋˜์–ด์žˆ๊ณ , Array์™€ Dictionary๋Š” Generic ์ปฌ๋ ‰์…˜์ด๋‹ค.์—ฌ๊ธฐ์„œ T๋ผ๋Š” ๊ฒƒ์€ Placehorlder

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

21. 11. 04 TDD, ์—ฐ์‚ฐํ”„๋กœํผํ‹ฐ

TDD๋ž€ Test Driven Development์˜ ์•ฝ์ž๋กœย ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์ด๋‹ค. ๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ, ์ž‘์€ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ๋งŒ๋“  Kent Beck์€ TDD๊ฐ€

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
post-thumbnail

21. 10. 26 Notification, ๋„ค์ด๋ฐ

๋“ฑ๋ก๋œ Notification์— NotificationCenter๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ์ฒด์ฃผ์š” ํ”„๋กœํผํ‹ฐ๋กœ๋Š” name, object, userInfo๊ฐ€ ์žˆ๋‹ค.userInfo์—๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ dictionary ํ˜•์‹์œผ๋กœ ๋ณด๋‚ด์ค„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์•„๋ž˜์™€๊ฐ™์ด ์—ด๊ฑฐํ˜•์„

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
post-thumbnail

21. 10. 22 IBOutlet & IBAction, Access Control

Interface Builder@๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์–ด๋–ค ์†์„ฑ์„ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค๊ณ  ์ „ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” ์˜ˆ์•ฝ์–ด์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ @๊ฐ€ ๋ถ™์€ ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ์–ด๋–ค attribute๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Œ์„ ๋งํ•œ๋‹ค.@IBAction โ†’ Interface Builder์™€ ์—ฐ๊ฒฐ๋œ Action์ด ์žˆ๋‹ค.@UI

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

21. 10. 20 Namespace, CustomStringConvertible

: ๊ด€๋ จ์žˆ๋Š” ๊ฒƒ๋“ค๋ผ๋ฆฌ ๋ชจ์•„๋†“์€ ๊ณต๊ฐ„?case๊ฐ€ ์—†๋Š” ์—ด๊ฑฐํ˜•์€ ์ธ์Šคํ„ด์Šคํ™” ๋˜์ง€ ์•Š๊ณ  ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์—ญํ• ์„ ํ•œ๋‹ค. ํƒ€์ž…ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉ!case๊ฐ€ ์—†๋Š” ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ•  ๋•Œ ์žฅ์ ์€, ๋œปํ•˜์ง€ ์•Š์€ ์ดˆ๊ธฐํ™”๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๊ณ  namespace์˜ ์—ญํ• ๋งŒ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.์—ด๊ฑฐํ˜•์ด๋‚˜ ๊ตฌ์กฐ์ฒด๋ฅผ

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

21. 10. 19 ์ €์žฅํ”„๋กœํผํ‹ฐ, ์—ฐ์‚ฐํ”„๋กœํผํ‹ฐ, init, ์ค‘์ฒฉํƒ€์ž…

ํ”„๋กœํผํ‹ฐ๋Š”ย ๊ฐ’์„ ํŠน์ • ํด๋ž˜์Šค(class), ๊ตฌ์กฐ์ฒด(struct), ์—ด๊ฑฐํ˜•(enum)๊ณผ ์—ฐ๊ฒฐํ•œ๋‹ค.Swift์˜ PropertiesStored Property(์ €์žฅ ํ”„๋กœํผํ‹ฐ)Computed Property(์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ)Type Property(ํƒ€์ž… ํ”„๋กœํผํ‹ฐ)์ €์žฅ ํ”„๋กœํผํ‹ฐ๋Š”

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

21. 10. 18 ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค

๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค์˜ ๊ณตํ†ต์ ๊ฐ’์„ ์ €์žฅํ•  ํ”„๋กœํผํ‹ฐ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.subscripts ๋ฌธ๋ฒ•์„ ํ†ตํ•ด ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋„๋ก subscripts๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.์ดˆ๊ธฐํ™” ์ƒํƒœ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.๊ธฐ๋ณธ ๊ตฌํ˜„ ์ด์ƒ

2021๋…„ 11์›” 24์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

21. 10. 15 ์žฌ๊ท€ํ•จ์ˆ˜

array.shuffle()shuffle()์€ ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋ฅผ ๋žœ๋ค์œผ๋กœ ์„ž๋Š” ํ•จ์ˆ˜์ด๋‹ค! ์ง€๊ธˆ ์ง„ํ–‰์ค‘์ธ ๊ฐ€์œ„๋ฐ”์œ„๋ณด๊ฒŒ์ž„ ํ”„๋กœ์ ํŠธ์—์„œ ๋งค์ง๋„˜๋ฒ„ ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๊ณ ์ž ๋ฐฉ๋ฒ•์„ ์ฐพ๋‹ค๊ฐ€ array์— 1~3d์˜ ์ •์ˆ˜๋ฅผ ๋„ฃ๊ณ  shuffle์„ ํ†ตํ•ด ์ˆœ์„œ๋ฅผ ๋žœ๋คํ™”ํ•œ ํ›„ ์š”์†Œ๋ฅผ ๋ฝ‘์•„์„œ ์“ฐ๋Š” ๋ฐฉ๋ฒ•

2021๋…„ 11์›” 23์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€

21. 10. 14 ์—ด๊ฑฐํ˜•, ์˜ค๋ฅ˜์ฒ˜๋ฆฌ

์ดˆ๊ธฐ ์ผ€์ด์Šค ๊ฐ’์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด initializer๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.์›๋ž˜ ๊ตฌํ˜„์„ ๋„˜์–ด ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๋„๋ก ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋‹ค.ํ‘œ์ค€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.์—ด๊ฑฐํ˜•์—๋Š” ๋‹จ์ˆ˜ํ˜• ์ด๋ฆ„์„ ์“ด๋‹ค.switch๋ฌธ์€ ์—ด๊ฑฐํ˜•์˜ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•  ๋•Œ ์ฒ ์ €ํ•ด์•ผ ํ•œ๋‹ค.์—ด๊ฑฐ

2021๋…„ 11์›” 20์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€