SWIFT
-
Make DSL with ResultBuilderSwift 2025. 8. 30. 10:06
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ Swift์ Result Builder๋ฅผ ํ์ฉํ์ฌ ์ง๊ด์ ์ด๊ณ ํํ๋ ฅ์ด ๋ฐ์ด๋ DSL(Domain Specific Language)์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ปSwift Result Builder Deep Dive์ด๋ค ์ํฉ์์๋ ๋ณต์กํ UI ๊ตฌ์ฑ์ด๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ๋ ์ด๋ฐ์ ์์๊ฑฐ์์! "์ ์ด๋ ๊ฒ ์ฝ๋๊ฐ ์ฅํฉํด์ผ ํ์ง? ๐ต๐ซ""๋ฐฐ์ด์ append ๋ฐ๋ณตํ๋ ๊ฒ ๋๋ฌด ๋ฒ๊ฑฐ๋กญ๋คใ ...""HTML์ด๋ SQL์ฒ๋ผ ์ง๊ด์ ์ผ๋ก ์ธ ์ ์์๊น?" ๋๋ SwiftUI์ ์ ์ธ์ ๊ตฌ๋ฌธ์ ๋ณด๋ฉด์ "์ฐ๋ฆฌ ํ๋ก์ ํธ์๋ ์ด๋ฐ ๊ฑธ ๋ง๋ค ์ ์์๊น?" ํ๊ณ ์๊ฐํด๋ณธ ์ ์์ผ์ค ๊ฑฐ์์. ๋ฐ๋ก ์ด๋ฐ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ ์ ์๋ ๊ฒ์ด Result Builder์ ๋๋ค. Swif..
-
Ensuring 60fps Animations in SwiftUI (GPU Rendering Optimization)SwiftUI 2025. 8. 23. 10:27
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ SwiftUI ์ ๋๋ฉ์ด์ ์ ์ฑ๋ฅ์ ๊ทนํ๊น์ง ๋์ด์ฌ๋ ค ์ผ๊ด๋ 60fps๋ฅผ ๋ณด์ฅํ๋ ์ค์ ์ต์ ํ ๋ฐฉ๋ฒ๋ค์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐SwiftUI Animation Performance Deep Dive์ด๋ฐ ๊ฒฝํ ์์ผ์ ๊ฐ์?"๋ถ๋๋ฝ๊ฒ ์์ง์ด๋ค๊ฐ ๊ฐ์๊ธฐ ๋์ด์ ธ์ ๐ฑ""๋ณต์กํ ๋ฆฌ์คํธ์์ ์คํฌ๋กคํ ๋ ๋ฒ๋ฒ ๊ฑฐ๋ฆผ""์ฌ๋ฌ ์ ๋๋ฉ์ด์ ์ด ๋์์ ์คํ๋ ๋ ํ๋ ์ ๋๋กญ ๋ฐ์""๋๋ฐ์ด์ค๊ฐ ๋จ๊ฑฐ์์ง๋ฉด์ ์ ๋๋ฉ์ด์ ์ด ๋๋ ค์ง"์ด๋ฐ ๋ฌธ์ ๋ค์ ๋จ์ํ ์ฌ์ฉ์ ๊ฒฝํ์ ํด์น๋ ๊ฒ์ ๋์ด์์ ์ฑ์ ํ์ง ์ธ์์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.ํนํ iOS 17๋ถํฐ ProMotion ๋์คํ๋ ์ด๊ฐ ๋ ๋๋ฆฌ ํผ์ง๋ฉด์, ์ฌ์ฉ์๋ค์ 120fps๊น์ง๋ ๊ธฐ๋ํ๊ฒ ๋์๊ฑฐ๋ ์. Why 60fps Matters More Than..
-
Swift Phantom TypesSwift 2025. 8. 15. 09:01
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ Swift์ ๊ณ ๊ธ ํ์ ์์คํ ๊ธฐ๋ฒ์ธ Phantom Types์ ๋ํด ๊น์ด ์๊ฒ ์์๋ณด๊ฒ ์ต๋๋ค ๐Phantom Types Deep Dive์ด๋ฐ ๊ฒฝํ ์์ผ์ ๊ฐ์?๋ฐํ์์ ๋ฐ์ํ๋ ํ์ ๊ด๋ จ ๋ฒ๊ทธ๋ค์ ์์์์."์ด ID๋ ์ฌ์ฉ์ ID์ธ๋ฐ ์ ์ํ ID๋ก ์ฌ์ฉํ์ง? ๐ฑ""์ํธํ๋ ๋ฐ์ดํฐ๋ฅผ ์ผ๋ฐ ๋ฌธ์์ด๋ก ์ฒ๋ฆฌํด์ ๋ณด์ ์ค๋ฅ ๋ฐ์""๋จ์๊ฐ ๋ค๋ฅธ ๊ฐ๋ค์ ์๋ชป ์ฐ์ฐํด์ ๊ณ์ฐ ์ค๋ฅ""์ํ๊ฐ ์๋ชป๋ ๊ฐ์ฒด์ ์๋ชป๋ ๋ฉ์๋ ํธ์ถ"์ด๋ฐ ๋ฌธ์ ๋ค์ ์ฝ๋๊ฐ ๋ณต์กํด์ง์๋ก ๋ ์์ฃผ ๋ฐ์ํ๊ณ , ๋ฐํ์์์์ผ ๋ฐ๊ฒฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ฃ .Phantom Types๋ ์ด๋ฐ ๋ฌธ์ ๋ค์ ์ปดํ์ผ ํ์์ ์์ ํ ์ฐจ๋จํ ์ ์๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฒ์ ๋๋ค. Why Phantom Types Matter More Than Eve..
-
Diet for iOS App size (feat. App Thinning)iOS 2025. 8. 2. 07:56
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ iOS ์ฑ ํฌ๊ธฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ค์ด๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ปiOS App Size Optimization Deep Dive์ฑ์คํ ์ด์ ์ฑ์ ์ฌ๋ฆฌ๊ณ ๋์ ์ด๋ฐ ์๊ฐ ํด๋ณด์ ์ ์๋์? "์ด? ๋ด ์ฑ์ด 200MB๊ฐ ๋์ด๊ฐ๋ค? ์ฌ์ฉ์๋ค์ด ์ ๋ฃฐ๋ฌ๋ก ๋ค์ด๋ก๋ ๋ชป ๋ฐ๊ฒ ๋๋ฐ..." ๐ฑ ๋๋ ๋ฆฌ๋ทฐ์์ ์ด๋ฐ ํผ๋๋ฐฑ์ ๋ฐ์๋ณด์ ์ ์ด ์์ ๊ฑฐ์์."์ฑ ์ฉ๋์ด ๋๋ฌด ์ปค์""๋ค์ด๋ก๋๊ฐ ์ค๋ ๊ฑธ๋ ค์""์ ์ฅ๊ณต๊ฐ์ ๋๋ฌด ๋ง์ด ์ฐจ์งํด์" ์ฑ ํฌ๊ธฐ๊ฐ ํฐ ๊ฒ์ ๋จ์ํ ์ฌ์ฉ์ ๊ฒฝํ๋ง์ ๋ฌธ์ ๊ฐ ์๋๋๋ค.๋ค์ด๋ก๋ ์ ํ์จ, ์ฌ์ฉ์ ์ ์ง์จ, ๊ทธ๋ฆฌ๊ณ ๊ถ๊ทน์ ์ผ๋ก๋ ๋น์ฆ๋์ค ์ฑ๊ณผ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ฃ . Why App Size Matters?๐ฑ ์ฌ์ฉ์ ๋ค์ด๋ก๋ ํ๋ ๋ถ์ํ Google์ ์ฐ๊ตฌ์์..
-
Swift ์ปดํ์ผ๋ฌ์ ํ์ ์ถ๋ก ํํค์น๊ธฐ (feat. ์ ์ด๋ ๊ฒ ์ปดํ์ผ์ด ์ค๋ ๊ฑธ๋ฆด๊น?)Swift 2025. 7. 27. 09:35
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ Swift ์ปดํ์ผ๋ฌ์ ํ์ ์ถ๋ก ๊ณผ์ ์ ๋ํด ๊น์ด ์๊ฒ ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ปSwift Type Inference Deep DiveSwift ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ํ ๋ฒ์ฏค ๋ง์ฃผ์น๋ ์ํฉ์ด ์์ฃ .let result = data .map { $0.someProperty } .flatMap { $0.transform() } .compactMap { $0.process() } ์ด๋ฐ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋น๋๋ฅผ ๋๋ ธ๋๋ฐ...์ปดํ์ผ๋ฌ๊ฐ ๋ช ๋ถ์ฉ ๋์๊ฐ๊ฑฐ๋ ์์ "expression was too complex" ์๋ฌ๋ฅผ ๋ฑ์ด๋ด๋ ๊ฒฝ์ฐ ๋ง์ด์์ ๐ ์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋๋ ๊ฑธ๊น์?๊ทธ ๋ต์ Swift์ ๊ฐ๋ ฅํ์ง๋ง ๋ณต์กํ ํ์ ์ถ๋ก ์์คํ ์ ์์ต๋๋ค. Why Type Inf..
-
Swift Homomorphic EncryptionSwift 2025. 7. 5. 13:18
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ Swift Homomorphic Encryption์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป Swift Homomorphic EncryptionSwift๋ ์์คํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ํ์ง๋ง, ์๊ฐ์ด ํ๋ฅด๋ฉด์ ์ ์ ๋ ๋ค์ํ ๋ถ์ผ๋ก ํ์ฅ๋๊ณ ์์ด์.์ด๋ฒ์๋ Swift.org ๊ณต์ ๋ธ๋ก๊ทธ์์ ๋ฐํํ Homomorphic Encryption, ๋ํ ์ํธ๋ผ๋ ํ๋ก์ ํธ๊ฐ ๊ทธ ๋ํ์ ์ธ ์๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. Apple์ด ๊ณต๊ฐํ ์ด ํ๋ก์ ํธ๋ Swift์์ ์ง์ ๋ํ ์ํธ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ์ ์๋๋ก ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด์ ์ธ์ด ํ์ฅ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ด๊ฑธ ํ๋ฒ ์์๋ด ๋๋ค ๐Why Homomorphic Encryption?๋ง์ ์ฑ๊ณผ ์๋น์ค๋ ๊ฐ์ธ ์ ๋ณด๋ฅผ ํด๋ผ์ฐ๋์ ์ฒ๋ฆฌํฉ๋..
-
Migrating the Password Monitoring service from JavaSwift 2025. 6. 29. 09:45
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Swift at Apple: Migrating the Password Monitoring service from Java ์ด๋ผ๋ Swift ๊ณต์ ๋ธ๋ก๊ทธ๊ธ์ ํ ๋๋ก ํ๋ฒ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป Swift at Apple: Migrating the Password Monitoring service from JavaSwift is heavily used in production for building cloud services at Apple, with incredible results. Last year, the Password Monitoring service was rewritten in Swift, handling multiple billions of r..
-
defer (async throwing contexts)Swift 2025. 5. 30. 09:30
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ค๋ ํฌ์คํ ์์๋ async ๋ฐ throws ์ปจํ ์คํธ์์ defer๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ๋ฒ ์์ฑํด๋ณผ๊น ํฉ๋๋ค ๐๐ป ์ต๊ทผ Swift by Sundell ์ฌ์ดํธ์์ ํด๋น ๊ด๋ จํ ํฌ์คํธ๋ฅผ ์ ํ๊ฒ ๋์๊ณ ๊ฝค ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ด๋ผ ํ๋ฒ ๋ณด๊ณ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํด์! ํด๋น ์๋ณธ ์ํฐํด์ ๋ณด์๋ ค๋๋ถ์ ์๊ฑธ ๋ณด์๋ฉด ๋ฉ๋๋ค ๐ Using Swift’s defer keyword within async and throwing contexts | Swift by SundellHow Swift’s defer keyword can be incredibly useful when working with code scopes that have multiple exit points, such as throw..