profile
Make a better world
post-thumbnail

Advanced in UI Data Source

wwdc Advances in UI Data Sources์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹คํ˜„์žฌ UI Data ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž์ปฌ๋ ‰์…˜๋ทฐ ๋ฐ์ดํ„ฐ์†Œ์Šค์„น์…˜ ์ˆ˜, ์•„์ดํ…œ ์ˆ˜์— ๋Œ€ํ•ด ์•Œ๋ ค์ค€๋‹คsimple, flexibleํ•˜๋‹คUI ์—…๋ฐ์ดํŠธ ํ•˜๋Š”๋ฒ•Web service respo

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

Swift Generics (Expanded)

์ œ๋„ค๋ฆญ์ด ๋ฐœ์ „ํ•ด๊ฐ€๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ์ค€๋‹ค.์˜ค๋Š˜ ํ•  ๊ฒƒ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.์ œ๋„ค๋ฆญ์ด ์™œ Swift์—์„œ ์ค‘์š”ํ• ๊นŒ?์ œ๋„ค๋ฆญ์„ ์•ˆ์“ฐ๋ฉด ๋ฆฌํ„ดํƒ€์ž…์„ ์ •ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.ํƒ€์ž…์„ ํ•˜๋‚˜๋กœ ๊ณ ์ •ํ•ด๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํƒ€์ž…์„ ๋„ฃ์„ ์ˆ˜๊ฐ€ ์—†๋‹ค.์ด๋ ‡๊ฒŒ Any ํƒ€์ž…์œผ๋กœ ๋˜์–ด์žˆ์œผ๋ฉด ๋งค๋ฒˆ ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์–ด๋–ค ํƒ€์ž…์ธ์ง€

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

shallow copy vs deep copy in Swift

https://medium.com/@cseankurbuet/understanding-deep-copy-and-shallow-copy-in-swift-8df201375611๊ธ€์„ ๋ฒˆ์—ญํ•œ ๊ฒƒ์ด๋‹ˆ ์›๋ฌธ์„ ๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•˜์—ฌ ๋ณต์‚ฌํ•œ ๋‘ ๋ฐ์ดํ„ฐ

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

Protocol and Value Oriented Programming in UIKit Apps

Protocol and Value Oriented Programming in UIKit Apps๋ฅผ ๋ณด๊ณ  ํ•ด์„ํ•œ ๊ฒƒ์ด๋‹ค.๋” ์ž์„ธํ•œ ๊ฒƒ์€ wwdc ์˜์ƒ์„ ๋ณด๊ณ  ํ™•์ธํ•ด๋ณด๋ฉด ์ข‹๋‹ค!์ฝ”๋“œ๋ฅผ ๋ณด์•˜์„ ๋•Œ ์•ž์— ์žˆ๋Š” ํ•จ์ˆ˜์˜ ์ฝ”๋“œ๋งŒ ๋ณผ๋ฟ ๋‹ค๋ฅธ ์ฝ”๋“œ์™€ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”์ง€๋ฅผ ๋ณด์ง€์•Š๋Š”๋‹ค.L

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

RunLoop

RunLoop๋ž€? ๋Ÿฐ๋ฃจํ”„๋Š” thread์™€ ๊ด€๋ จ์žˆ๋Š” ์ค‘์š”ํ•œ ์ธํ”„๋ผ ๋ถ€๋ถ„์ด๋‹ค. ๋Ÿฐ๋ฃจํ”„๋Š” ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ loop๋กœ ์ž‘์—…์„ ์Šค์ผ€์ฅดํ•˜๊ฑฐ๋‚˜ ๋‹ค๊ฐ€์˜ค๋Š” ์ด๋ฒคํŠธ๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๋Ÿฐ๋ฃจํ”„์˜ ๋ชฉ์ ์€ ์ž‘์—…์ด ์žˆ์„ ๊ฒฝ์šฐ ์“ฐ๋ ˆ๋“œ๋ฅผ ๋ฐ”์˜๊ฒŒ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ ํ•ด์•ผํ•  ์ž‘์—…์ด ์—†์„ ๊ฒฝ์šฐ ์“ฐ๋ ˆ๋“œ๋ฅผ

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

Optimizing Swift Performance

WWDC Optimizing Swift Performance WWDC 2015 Optimizing Swift Performance๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ–ˆ๋‹ค. ์Šค์œ„ํ”„ํŠธ๋Š” ARC์™€ ํ•จ๊ป˜ Flexible, Safe ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‹ค. ์Šค์œ„ํ”„ํŠธ์—๋Š” ์ข‹์€ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๋‹ค(ex, ํด๋กœ

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

Understanding Xcode Build System

ํ•ด๋‹น Understanding Xcode Build System๋ฅผ ๋ณ€์—ญํ•ด์„œ ์˜ฌ๋ฆฌ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.์ €์˜ ๊ธ€๋ณด๋‹ค ์‹ค์ œ ์˜๋ฌธ์„ ๋ณด์‹œ๋Š” ๊ฒƒ์„ ๋” ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค!๋ชจ๋“  Swift ํ”„๋กœ๊ทธ๋žจ์€ ์‹ค์ œ ๊ธฐ๊ธฐ์—์„œ ์‹คํ–‰๋˜๊ธฐ ์ „์— ๋งŽ์€ ๋ณ€ํ™˜์ด ์ด๋ฃจ์–ด์ง„๋‹ค.์ด ๊ณผ์ •์€ ๋ณดํ†ต Xcode Build Syste

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

Lottie ํ†บ์•„๋ณด๊ธฐ

Lottie๋Š” ์—์–ด๋น„์•ค๋น„์—์„œ ๋งŒ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ iOS, ์•ˆ๋“œ๋กœ์ด๋“œ, ์›น์—์„œ vector ๊ธฐ๋ฐ˜์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. Lottie๋Š” JSON ํฌ๋งท์œผ๋กœ ๋ชจ์…˜์„ ๋งŒ๋“ค์–ด์„œ ๋ฒกํ„ฐ์™€ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค๊ณ  ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์š”๋ฒˆ์— ์ ์šฉํ•  ๊ท€์—ฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์•„๋ž˜์™€

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

RxSwift Basic 4ํƒ„

๋จผ์ € ๋‘ Observable์˜ ์ฐจ์ด์ ์€ ์–ธ์ œ ๋ฐฉ์ถœ์„ ์‹œ์ž‘ํ•˜๋ƒ์— ๋‹ฌ๋ ค ์žˆ๋‹คHot Observable๋Š” ์ด Observable์ด ๋งŒ๋“ค์–ด์ง€์ž๋งˆ์ž ๋ฐฉ์ถœ์‹œ์ž‘ํ•œ๋‹ค.๊ทธ๋ž˜์„œ ๋งŒ์•ฝ์— ์ค‘๊ฐ„์— ์–ด๋–ค observer๊ฐ€ ์ด๊ฒƒ์„ ๊ตฌ๋…ํ•˜๊ฒŒ ๋˜๋ฉด sequence์˜ ์ค‘๊ฐ„์—์„œ ์‹œ์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค.๊ทธ๋ฆฌํ•˜์—ฌ

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

Mysteries of Auto Layout, Part 2

Mysteries of Auto Layout, Part 22๋ฒˆ์งธ ํŒŒํŠธ์ž…๋‹ˆ๋‹ค.The Layout Cycle์•ฑ ์‹คํ–‰ํ•˜๊ณ  ์—”์ง„ ๊ฑธ์ณ์„œ ๋ ˆ์ด์•„์›ƒ์ด ์™„์„ฑ๋œ๋‹ค. ์ด์ „์— ๋ณด์—ฌ์ค€ ํ”„๋กœ์„ธ์Šค๋‹ค.์‚ฌ์ดํด์ด ์ด๋ ‡๊ฒŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.Run loop์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ ๋ ˆ์ด์•„์›ƒ ๋ณ€ํ•˜๋Š”๊ฒƒ์„ ๊ณ„์‚ฐํ•˜๊ณ  ๊ทธ๋‹ค์Œ

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

Mysteries of Auto Layout, Part 1

WWDC Mysteries of Auto Layout, Part 1Auto Layout is a powerful constraint-based layout engine that can drive complex and dynamic interfaces on both iO

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

Subscript

subscript์—์„œ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•ด์„œ ์„ค์ •์ด๋‚˜ ์–ป๋Š”๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ’๋“ค์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.๋ณดํ†ต Array๋‚˜ ๋”•์…”๋„ˆ๋ฆฌ์—์„œ ๊ฐ’์„ ์–ป์œผ๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์จ์•ผํ•œ๋‹ค.ํ•˜๋‚˜์˜ ํƒ€์ž…์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ๊ฐœ์˜ subscripts์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ์—ฌ๋Ÿฌ ๊ฐœ

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

Singleton ํŒจํ„ด

static ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋กœ ์ „์—ญ์œผ๋กœ ํ•˜๋‚˜์˜ Class๋ฅผ ์ƒ์„ฑํ•˜์—ฌ, ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค.์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด์ฆํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.iOS์—์„œ๋Š” ์•ฑ ์„ค์ •์ด๋‚˜ ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋ณธ ์„ค์ •์„ ์ €์žฅํ•˜๋Š” UserDefaults๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ธ์Šคํ„ด์Šค

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

iOS ๊ฐœ๋ฐœ 6๊ฐœ์›” ํšŒ๊ณ 

์˜ค์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์€ ์‹œ๊ฐ„์ด ์™”๋‹ค. ๊ณ ์ƒํ–ˆ๋‹ค๊ณ  ์ž˜ ๋ฐฐ์› ๋‹ค๊ณ  ์ด์•ผ๊ธฐ ํ•˜๊ณ ์‹ถ์€ ๋‚ ์ด๋‹ค. ๋ฏธ๋ จ์— ๋Œ€ํ•œ ๋„์ „์ด ์–ด๋Š์ƒˆ ์ผ์ƒ์ด ๋˜๋ฒ„๋ฆฌ๋‹ˆ ํ•˜๋ฃจ๋ผ๋„ ๊ฐœ๋ฐœ์„ ์•ˆํ•˜๋ฉด ์–ด์ƒ‰ํ•˜๋‹ค. ์ฒ˜์Œ ์‹œ์ž‘ํ• ๋•Œ์—๋Š” 6๊ฐœ์›” ์ง€๋‚˜๋ฉด ์ถฉ๋ถ„ํ•œ ์‹ค๋ ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ฒ ์ง€ ๋ผ๋Š” ์ƒ๊ฐ์ด ์ปธ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ƒ๊ฐํ•ด๋ณด๋ฉด 6๊ฐœ์›”๋งŒ์—

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

App Life Cycle

App Life Cycle๋Š” ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ๊ด€๋ จ ์ด๋ฒคํŠธ๋“ค์„ ๋‹ค๋ฃจ๋Š” ๊ณณ์ด๋ฉฐ app์ด foreground, background์žˆ์„ ๋•Œ ์‹œ์Šคํ…œ notification์ด ๋ฐ˜์‘ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ด ์‚ฌ์ดํด์—์„œ ๊ฐ๊ฐ ์ƒํƒœ์— ๋”ฐ๋ผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์„ App์ด

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

Cache

์บ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค๋ฐ์ดํ„ฐ๋‚˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด ๋†“๋Š” ์ž„์‹œ ์ €์žฅ์†Œ์ž์›์„ ์ ˆ์•ฝํ•˜๊ณ  ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ์ €์žฅํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณRAM ๋ฉ”๋ชจ๋ฆฌ (๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์˜ ์ผ๋ถ€๋ถ„์„ ์‚ฌ์šฉ)Disk (ํŒŒ์ผ ํ˜•ํƒœ๋กœ ๋””์Šคํฌ์— ์ €์žฅ)RAM์—์„œ ๋ฉ”๋ชจ๋ฆฌ

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

Localization ์ง€์—ญํ™”

Localization๋Š” ์—ฌ๋Ÿฌ ์–ธ์–ด์™€ ์ง€์—ญ์„ ์ง€์›ํ•˜๋Š” ์•ฑ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.์ด๊ฒƒ์ด ์™œ ํ•„์š”ํ• ๊นŒ?์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž์–ด๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž์–ด๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋‹ค๋ฅด๊ฒŒ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ฝ๋Š”๋‹ค.๊ทธ๋ž˜์„œ ๋งŒ์•ฝ Localization์œผ๋กœ ๊ฐ ์–ธ์–ด์— ๋Œ€์‘ํ•˜์—ฌ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•„๋ž์–ด๋ฅผ

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

Widget 2ํƒ„

2ํƒ„์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์œ„์ ฏ์„ ๋งŒ๋“œ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋ ค๊ณ  ํ•œ๋‹ค.๋จผ์ € Widget๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค.ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์—์„œ File -> New -> Target๋ฅผ ๋ˆŒ๋Ÿฌ์„œ Widget๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ฒŒ ๋˜๋ฉด Widget Extension์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.์ด๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์ด ์ฒซ

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

Widget 1ํƒ„

์œ„์ ฏ, ์•ก์…˜์‹œํŠธ์— ๋ฒ„ํŠผ ์ถ”๊ฐ€, ์‚ฌ์ง„ ์•ฑ ๋‚ด ์‚ฌ์ง„ ํ•„ํ„ฐ ๋“ฑ์˜ ์ž‘์—…์„ ๋งํ•œ๋‹ค.์•ฑ์„ ํ™•์žฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•œ๋‹ค.App extension์˜ ์ข…๋ฅ˜๋Š” ๋งค์šฐ๋งŽ๋‹ค!์ด์™ธ์—๋„ ์•„๋ž˜์— ๋”์žˆ๋Š”๋ฐ ์ด๋Š” ๊ตณ์ด ๋‹ค ํ™•์ธํ•ด๋ณผ ํ•„์š”๋Š” ์—†๋‹ค! ์ด์ •๋„๋กœ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค์ •๋„๋งŒ ์•Œ๊ณ ์žˆ์žapp extens

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

Frame vs Bounds 1ํƒ„

frame๊ณผ bounds์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ํ—ท๊ฐˆ๋ฆด ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ ๋ฉด์ ‘์งˆ๋ฌธ์œผ๋กœ ์ž์ฃผ ๋‚˜์˜ค๊ธฐ์— ํ•œ๋ฒˆ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ฒ ๋‹ค๋จผ์ € ๊ฐ๊ฐ ๊ณต์‹๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ํŒŒ์•…ํ•ด๋ณด์žFrame์˜ ์ •์˜๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹คThe frame rectangle, which describes the viewโ€™s locat

2022๋…„ 7์›” 27์ผ
ยท
0๊ฐœ์˜ ๋Œ“๊ธ€
ยท