SWIFT
-
Swift Protocol ๋ค์ค ์ฑํSwift 2025. 2. 26. 19:54
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Swift Protocol๊ณผ ๋ค์ค ์ฑํ์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป ์ฌ์ค, ๋ด์ฉ ์์ฒด๋ ๊ธฐ์ด์ ์ด๊ณ ๊ฐ๋จํ์ง๋ง ์ฒ์ ๊ฐ๋ฐ์ ์์ํ๊ณ Swift๋ฅผ ๋ฐฐ์ฐ์๋ ๋ถ๋ค์ ํท๊ฐ๋ ค ํ๊ฑฐ๋ ์๋ฌธ์ ํ๋ ์ง์ ์ด ๊ฐํน ์์ด ํ๋ฒ ์ฝ๊ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค!Protocol?Swift์์ ํ๋กํ ์ฝ์ ํน์ ์๊ตฌ์ฌํญ์ ์ ์ํ๋ ์ฒญ์ฌ์ง์ด์ฃ .ํด๋์ค, ๊ตฌ์กฐ์ฒด, ์ด๊ฑฐํ์ด ํด๋น ํ๋กํ ์ฝ์ ์ฑํํ๋ฉด ํ๋กํ ์ฝ์ด ์ ์ํ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํด์ผ ํฉ๋๋ค. protocol Greetable { var name: String { get } func greet() -> String}struct Person: Greetable { var name: String func greet() -> S..
-
RxSwift - withUnretainedRxSwift 2025. 2. 21. 07:54
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ RxSwift์ withUnretained์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ปRxSwift๋ฅผ ์ฌ์ฉํ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ ๋์ ํน์ ๊ฐํ ์ํ ์ฐธ์กฐ ๋ฌธ์ ๋ฅผ ๋ง๋ ์ ์๋ ์ํฉ์ด ๋ง์ต๋๋ค.๋ฌผ๋ก ์ด๋ฅผ ์ํด weak self๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์์ง๋ง, ๊ท์ฐฎ์์์..?๊ทธ๋์ ๋ณด๋ค ๊ฐ๋ ์ฑ์ด ์ข๊ณ ํธ๋ฆฌํ๊ฒ withUnretained๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ผ ํ๋ฒ withUnretained๊ฐ ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์๋ณผ๊น์? withUnretained?withUnretained๋ RxSwift์์ weak self ํจํด์ ๋ณด๋ค ๋ช ํํ๊ณ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ฐ์ฐ์์ ๋๋ค.์ฆ, ๊ธฐ์กด weak self ์ฌ์ฉ ์ ๋ฐ์์ํค๋ ์ต์ ๋์ ์ฒ๋ฆฌํ๋๊ฒ์ ๋ํด ๋์ผํ๊ฒ ์ฒ๋ฆฌ๋ฅผ ..
-
Property Observers (willSet, didSet)Swift 2025. 1. 27. 12:17
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ์ฐํด๋ฅผ ๋ง์ดํ์ฌ Swift ๊ธฐ์ด๋ฅผ ํ๋ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค!๊ทธ ์ค์์ Property Observers์ willSet๊ณผ didSet์ ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ํบ์๋ณด๊ฒ ์ต๋๋ค ๐๐ป Swift๋ ๊ฐ์ฒด์งํฅ๊ณผ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ฅ์ ๋ชจ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ฃ .์ฌ๊ธฐ์ Property Observers๋ Swift์ ๊ธฐ๋ฅ ์ค ํ๋๋ก ํ๋กํผํฐ์ ๊ฐ ๋ณํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๊ทธ์ ๋ฐ์ํ๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ๋์์ค๋๋ค. ๊ทธ๋ผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์๋ณด์์ฃ ๐Property Observers?์ฐ์ Property Observers๊ฐ ๋ฌด์์ธ์ง ์์๋ณผ๊น์?Property Observers๋ ํ๋กํผํฐ์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ํธ์ถ๋๋ ํน๋ณํ ๋ฉ์๋์์. Swift์์ ๋๊ฐ์ง Pro..
-
Swift๋ก ํจ์จ์ ์ธ ๋๋ฒ๊ทธ ๋ก๊น ์์คํ ๊ตฌ์ถํ๊ธฐSwift 2025. 1. 6. 18:49
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ์ฑ ๊ฐ๋ฐ ํ๊ฒฝ์์ ํจ์จ์ ์ธ ๋๋ฒ๊ทธ ๋ก๊น ์์คํ ๊ตฌ์ถ์ ์ฃผ์ ๋ก ํฌ์คํ ํ๋ ค ํฉ๋๋ค ๐๐ป ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ก๊น (logging)์ ์ฑ์ ๋์์ ์ดํดํ๊ณ ๋๋ฒ๊น ํ๋๋ฐ ํ์์ ์ธ ๋๊ตฌ๋ผ ๋ณผ ์ ์์ด์.๊ทธ๋ ๊ธฐ์ ์ด๋ฒ ํฌ์คํ ์์ Swift๋ก ๊ตฌํ๋ ํจ์จ์ ์ธ ๋๋ฒ๊ทธ ๋ก๊น ์์คํ ๊ตฌ์ถ์ ํด๋ณผ๊น ํฉ๋๋ค! Swift๋ก ํจ์จ์ ์ธ ๋๋ฒ๊ทธ ๋ก๊น ์์คํ ๊ตฌ์ถํ๊ธฐ์ฐ์ ํด๋น ํฌ์คํ ์์ ๊ฐ์ฅ ํฐ ์ฃผ์ถ์ด ๋๋ ๋ ํด๋์ค ๊ตฌํ์ ์ค๊ณํฉ๋๋ค. 1๏ธโฃ SwiftLog - ์ค์ ๋ก๊ทธ ํ์ผ ๊ด๋ฆฌ์ ์ฐ๊ธฐ๋ฅผ ๋ด๋นํ๋ ํด๋์ค2๏ธโฃ DebugLogger - ๋ก๊ทธ ๋ฉ์์ง ํฌ๋งทํ ๊ณผ ๋ก๊น ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํด๋์ค ํด๋น ํด๋์ค๋ค๋ก ๋ง๋ค์ด์ง ์์คํ ์ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ํน์ง์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. 1๏ธโฃ ํ์ผ ๊ธฐ๋ฐ ๋ก๊น 2๏ธ..
-
RangeSet (feat. Set, IndexSet)Swift 2024. 12. 26. 14:35
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Swift 6์์ ์๋ก ๋์ ๋ RangeSet์ด๋ผ๋๊ฒ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป ๊ทธ๋ผ ๋ฐ๋ก ๊ฐ๋ณผ๊น์?RangeSetRangeSet์ ๋ฒ์๋ก ํํ๋๋ ๋น๊ต ๊ฐ๋ฅํ ๋ชจ๋ ์ ํ์ ๊ฐ์ ์งํฉ์ ๋๋ค. struct RangeSet where Bound : Comparable Swift 6์์ ํ์ฌ๋์ด iOS 18 ์ด์๋ถํฐ ํด๋น ํ์ ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๊ตฌํํ ์ ์์ด์. ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ช ํด๋ณด์๋ฉด, RangeSet์ ๋ถ์ฐ์์ ์ธ ๋ฒ์์ ๊ฑธ์ณ ์๋ ๋น๊ต๊ฐ ๊ฐ๋ฅํ ๊ฐ ์งํฉ์ ํจ์จ์ ์ผ๋ก ํํํ ์ ์์ต๋๋ค.RangeSet์ ์ผ๋ฐ์ ์ผ๋ก ์ปฌ๋ ์ ์ ์ธ๋ฑ์ค ์ ํ ๋ฒ์๋ฅผ ์ ์ฅํด ์ปฌ๋ ์ ์ ์ฌ๋ฌ ํ์ ๋ฒ์๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์์๋ฅผ ๋ณผ๊ป์. var numbers = [10, 12, -..
-
NSObject์ ๋ํ์ฌSwift 2024. 12. 19. 08:44
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ ์ฃผ์ ๋ NSObject์ ๋ํด ํ๋ฒ ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค ๐๐ป ์ฌ์ค, NSObject๋ Swift ์นดํ ๊ณ ๋ฆฌ๋ณด๋ค๋ Objective-C์ ๋ ๊ฐ๊น๊ธดํ์ฃ .๋, iOS ๊ฐ๋ฐ์ ๊ทผ๊ฐ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ผ ํ๋ฒ ์์๋ณผ๊น์? NSObject?NSObject๋ Objective-C ๋ฐํ์ ์์คํ ์ ๊ทผ๊ฐ์ ์ด๋ฃจ๋ ์ต์์ ํด๋์ค์ฃ .Foundation ํ๋ ์์ํฌ์ ๋ฃจํธ ํด๋์ค๋ก, ๊ฑฐ์ ๋ชจ๋ Cocoa์ Cocoa Touch ํด๋์ค์ ๊ธฐ๋ณธ ํด๋์ค ์ญํ ์ ํด์ค๋๋ค.๊ฒฐ๊ตญ Objective-C์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ํต์ฌ ์์๋ผ๊ณ ๋ณผ ์ ์์ด์.์ด NSObject๋ฅผ ์์๋ฐ๋ ํ์ ํด๋์ค๋ค์ ๋ฐํ์ ์์คํ ์ ๋ํ ๊ธฐ๋ณธ ์ธํฐํ์ด์ค์ Objective-C ๊ฐ์ฒด์ฒ๋ผ ๋์..
-
Explore the Swift on Server ecosystem (feat. WWDC 2024)Swift 2024. 12. 2. 18:49
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ WWDC 2024์์ ์๊ฐ๋ Explore the Swift on Server ecosystem์ ๋ํด ํ์ตํด๋ณด๋ ค ํฉ๋๋ค ๐๐ป Swift ์ธ์ด๋ ์ฐ๋ฆฌ๊ฐ ์ ํ ์ํ๊ณ์ ์ฑ์ ๊ฐ๋ฐํ๋๋ฐ ์ฃผ๋ก ์ฐ์ด์ง๋ง ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ธ์ด๋ก๋ ์ ํฉํฉ๋๋ค.๊ทธ๋ ๊ธฐ์ ์์ํ ์ด ๊ฐ๋ ๊ณผ ์ฐ์์ ์ด๋ป๊ฒ ์ ํ์ ์๊ฐํ๊ณ ์ฌ์ฉํ๋ผ๊ณ ํ๋์ง ์์๋ด ๋๋ค ๐ Explore the Swift on Server ecosystemMeet Swift on Server์ฐ์ , Swift๋ฅผ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํ๊ฒ ๋ง๋๋ ์์๋ค์ ๋ํด ์์๋ด์ผ ํฉ๋๋ค. Swift๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋น์ง ์ปฌ๋ ์ ๋์ ์๋ ์ฐธ์กฐ ๊ณ์ฐ์ ํตํด ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ผ๋ก C์ ์ ์ฌํ ์ฑ๋ฅ์ ์ป์ ์ ์์ด์.์ด๋ ์์ธก ๊ฐ๋ฅํ ๋ฆฌ..
-
ETag ์บ์ฑ์ผ๋ก ์ฑ ์ฑ๋ฅ ์ต์ ํํ๊ธฐSwift 2024. 11. 26. 18:51
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ ETag๋ฅผ ์ด์ฉํด ๋คํธ์ํฌ ์บ์ฑ์ ํ์ฌ ์ฑ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณผ๊ป์ ๐๐ป ETag ์บ์ฑ์ผ๋ก ์ฑ ์ฑ๋ฅ ์ต์ ํํ๊ธฐ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ์์ ๋คํธ์ํฌ ์ต์ ํ๋ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๋ ํต์ฌ ์์์ ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์ HTTP ํ๋กํ ์ฝ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ์ค ํ๋์ธ ETag(Entity Tag)์ ๋ํด ์์ธํ ์์๋ณด๊ณ , iOS ์ฑ์์ ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ETag?ETag๋ ์น ๋ฆฌ์์ค์ ํน์ ๋ฒ์ ์ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ์๋ณ์์์.์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฆฌ์์ค๋ฅผ ์๋ตํ ๋ ETag ํค๋๋ฅผ ํจ๊ป ์ ์กํ๋ฉฐ, ํด๋ผ์ด์ธํธ๋ ์ดํ ์์ฒญ ์ ์ด ๊ฐ์ ์ฌ์ฉํด ๋ฆฌ์์ค๊ฐ ๋ณ๊ฒฝ๋์๋์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์๋์ ๊ฐ์ด ์๋ฅผ ๋ค์ด์, ์๋ฒ์ ์๋ต ํค๋๋..