SWIFT
-
[SE-0506] Advanced Observation TrackingSwift 2026. 2. 1. 06:46
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SE-0506 Advanced Observation Tracking์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ปIntroSwift์ Observation ํ๋ ์์ํฌ๋ @Observable ๋งคํฌ๋ก๋ก ๊ฐ๋จํ๊ฒ ๋ณํ๋ฅผ ์ถ์ ํ ์ ์๊ฒ ํด์ค๋๋ค.ํ์ง๋ง ๊ธฐ์กด withObservationTracking์ ๋น๋๊ธฐ ํ๊ฒฝ์ ์ต์ ํ๋์ด ์์ด์, ๋๊ธฐ ์์คํ ๊ณผ ์ฐ๋ํ๊ฑฐ๋ ๋ ์ธ๋ฐํ ์ ์ด๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ํ๊ณ๊ฐ ์์์ต๋๋ค. SE-0506์ ์ด๋ฐ ์ผ์ด์ค๋ฅผ ์ํ ์๋ก์ด ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ๊ธฐ์กด @Observable๊ณผ Observations๋ก ์ถฉ๋ถํ์ง๋ง, ๋ฏธ๋ค์จ์ด ์ธํ๋ผ๋ ์์ ฏ ์์คํ ์ ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์ด๋ฒ ์ ์์ด ๊ผญ ํ์ํ ๊ฑฐ์์ ๐ ํ์ฌ 2026๋ 2์ 3์ผ๊น์ง ๋ฆฌ๋ทฐ๊ฐ ์งํ..
-
[SE-0493] defer support asyncSwift 2026. 1. 24. 12:54
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SE-0493 Support async calls in defer bodies์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ปIntroSwift์ defer๋ ์ ๋ง ์ ์ฉํ ๊ธฐ๋ฅ์ด์ฃ .scope๋ฅผ ๋ฒ์ด๋ ๋ ๋ฐ๋์ ์คํ๋์ด์ผ ํ๋ cleanup ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์์ฑํ ์ ์๊ฒ ํด์ค๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ defer ๋ธ๋ก ์์์๋ async ํจ์๋ฅผ ํธ์ถํ ์ ์๋ค๋ ์ ์ ๋๋ค.async context์ ์์ด๋ await๋ฅผ ์ฐ๋ฉด ์๋ฌ๊ฐ ๋๊ฑฐ๋ ์. ์ด๋ฒ SE-0493์ ๋ฐ๋ก ์ด ์ ์ฝ์ ํ์ด์ฃผ๋ ์ ์์ ๋๋ค. ์ด๋ฏธ Accepted ์ํ์ด๊ณ ๊ตฌํ๋ ์๋ฃ๋์์ผ๋, ๊ณง ์ค๋ฌด์์๋ ์ธ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค ๐ ์ ํ์ํ๊ฐ?defer๋ Swift 2์์ ๋์ ๋ ๊ธฐ๋ฅ์ผ๋ก, scope ๊ธฐ๋ฐ cleanup..
-
[SE-0504] Task Cancellation ShieldsSwift 2026. 1. 17. 09:03
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SE-0504 Task Cancellation Shields์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ป์ฌ๊ธฐ์๋ ์ ๊ฐ ์ดํดํ๊ฑธ ๋ฐํ์ผ๋ก ์์ฝํ๊ณ ๋๋ฆ๋๋ก ์ ๋ฆฌํ๊ฒ์ผ๋ก ์ ์ฒด ์์ฝ์์ด ๋ํ ์ผํ ๋ถ๋ถ๊น์ง๋ ์๋ณธ์ด ๊ถ๊ธํ์๋ฉด ์๋ ์๋ฌธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์!IntroSwift Concurrency ํ๊ฒฝ์์ Task ์ทจ์๋ ํ๋ ฅ์ (cooperative)์ผ๋ก ๋์ํฉ๋๋ค.ํ๋ฒ ์ทจ์๋๋ฉด ๋๋๋ฆด ์ ์๊ณ , ์์ Task๊น์ง ์ ํ๋์ฃ . ๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ ๋ฆฌ์์ค ์ ๋ฆฌ ๊ฐ์ ์ฝ๋๋ ์ทจ์ ์ฌ๋ถ์ ์๊ด์์ด ๋ฐ๋์ ์คํ๋์ด์ผ ํ๋ค๋ ์ ์ ๋๋ค. ์ง๊ธ๊น์ง๋ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด unstructured task๋ฅผ ์์ฑํ๋ ๊ผผ์๋ฅผ ์จ์ผ ํ๋๋ฐ, ์ด๋ฒ SE-0504๋ ์ด ๋ฌธ์ ๋ฅผ ์ ๋ฉด์ผ๋ก ํด๊ฒฐํ๋ ์ ์์ ๋๋ค. ์ต๊ทผ ์น์ธ๋..
-
[SE-0502] Exclude private initialized properties from memberwise initializerSwift 2026. 1. 11. 09:51
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ SE-0502 Exclude private initialized properties from memberwise initializer์ ๋ํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค ๐๐ปIntroSwift์์ struct๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด, ์์ํ์ง ์์๋ ์์ฐ์ค๋ฝ๊ฒ ํ์ฉํ๊ฒ ๋๋ ๊ธฐ๋ฅ ์ค ํ๋๊ฐ ๋ฐ๋ก memberwise initializer์ ๋๋ค. ์ ์ฅ ํ๋กํผํฐ๋ฅผ ์ ์ธํ๊ธฐ๋ง ํ๋ฉด, ์ปดํ์ผ๋ฌ๊ฐ ์์์ ์ด๋์ ๋ผ์ด์ ๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ๊ธฐ๋ฅ์ด์ฃ . ํ์ง๋ง ์ด ํธ๋ฆฌํ ๊ธฐ๋ฅ์, ์ ๊ทผ ์ ์ด์(private, fileprivate)์ ์ฎ์ด๊ธฐ ์์ํ๋ฉด ์๊ฐ๋ณด๋ค ๋ง์ ๋ถํธํจ๊ณผ ํจ์ ์ ๋๋ฌ๋ ๋๋ค. ์ด๋ฒ ๊ธ์์๋ Swift Evolution Proposal SE-0502 – Exclude private in..
-
Embedded Swift Improvements Coming in Swift 6.3Swift 2025. 12. 26. 08:56
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Swift 6.3์ Embedded Swift ๊ฐ์ ์ฌํญ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป(์ง๊ธ์ ์์ง Swift 6.3 ๋ฆด๋ฆฌ์ฆ ์ ์ ๋๋ค ๐)Swift 6.3์์ Embedded Swift๊ฐ ๋ํญ ์ ๊ทธ๋ ์ด๋๋ฉ๋๋ค.๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ ๊ฐ๋ฐ์ด ๋์ฑ ํธํด์ง ์์ ์ด์์!Embedded Swift?Embedded Swift๋ ๋ง์ดํฌ๋ก์ปจํธ๋กค๋ฌ์ฒ๋ผ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ํ๊ฒฝ์์ ๋์ํ๋๋ก ์ค๊ณ๋ Swift์ ๋ถ๋ถ ์งํฉ์ ๋๋ค.ํน๋ณํ ์ปดํ์ผ ๋ชจ๋๋ฅผ ์ฌ์ฉํด์ ์ผ๋ฐ Swift๋ณด๋ค ํจ์ฌ ์์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์ฑํ์ฃ .Swift ์ธ์ด์ ๋๋ถ๋ถ์ Embedded Swift์์๋ ๋๊ฐ์ด ๋์ํ๊ตฌ์. ์ง๋ ๋ช ๋ฌ๊ฐ C ์ํธ์ด์ฉ์ฑ๋ถํฐ ๋๋ฒ๊น , ๋งํค์ง ๋ชจ๋ธ๊น์ง ๋ค์ํ ๊ฐ์ ์ด ์ด๋ฃจ์ด์ก๋๋ฐ ํ๋์ฉ ์ดํด๋ณผ๊ฒ์. ..
-
Nonexhaustive enums - Swift 6.2.3Swift 2025. 12. 20. 10:08
์๋ ํ์ธ์! ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์์๋ Nonexhaustive enums์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ป Swift 6.2.3์ ์ ๋ง ์ค์ํ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ฉ๋๋ค. SE-0487: Extensible Enums! ์ง๊ธ๊น์ง Swift ํจํค์ง๋ฅผ ๋ง๋ค ๋ enum์ case๋ฅผ ์ถ๊ฐํ๋ฉด breaking change๊ฐ ๋ฐ์ํ์ฃ ?์ด์ ๊ทธ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ์ ์์ต๋๋ค. AS-IS Problem// Version 1.0public enum HTTPStatus { case ok, notFound, serverError}// Version 1.1 - ์ case ์ถ๊ฐpublic enum HTTPStatus { case ok, notFound, serverError case earlyHints // ๐..
-
NSAttributedString Performance OptimizationSwift 2025. 12. 6. 08:59
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐UITextView๋ UILabel์์ ์์ฒ ์ค์ ํ ์คํธ๋ฅผ ๋ค๋ฃฐ ๋ ์ฑ์ด ๋ฒ๋ฒ ์ด๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํฐ์ง๋ ๊ฒฝํ ์์ผ์ ๊ฐ์?์ด๋ฒ ํฌ์คํ ์์๋ NSAttributedString์ ์ฑ๋ฅ ์ต์ ํ์ ๋ํด ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค. Apple ์์ง๋์ด์ ๊ณต์ ๋ต๋ณ์ ํ ๋๋ก ๋ฐฉ๋ฒ๋ค์๋ฅผ ์ ๋ฆฌํด๋ดค์ด์.Attribute Dictionary๋ ์๋์ผ๋ก ์ค๋ณต ์ ๊ฑฐ๊ฐ์ฅ ๋จผ์ ์์์ผ ํ ์ฌ์ค์ NSAttributedString์ ๋ด๋ถ์ ์ผ๋ก ๋์ผํ attribute dictionary๋ฅผ ์๋์ผ๋ก uniquifyํฉ๋๋ค.Apple ์์ง๋์ด์ ๊ณต์ ๋ต๋ณ2015๋ , Apple์ TextKit ์์ง๋์ด Aki Inoue๊ฐ ๊ณต์ ํ์ธํด์ค ๋๋ชฉ์ด ์์ต๋๋ค. Memory optimization of NSAttributedStringD..
-
Pagination StrategyiOS 2025. 11. 22. 08:33
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค ๐์ด๋ฒ ํฌ์คํ ์ ๊ฐ๋ฐ์์ ํ์ด์ง๋ค์ด์ ๊ตฌํ ๋ฐฉ๋ฒ๋ก ์ ๋ํด ๊น์ด ์๊ฒ ์์๋ณด๊ฒ ์ต๋๋ค ๐๐ปPagination Deep Dive๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ํ ๋ฒ์ฏค ๋ง์ฃผ์น๋ ์ํฉ์ด ์์ฃ .let posts = try await api.fetchAllPosts() // 10,000๊ฐ์ ๊ฒ์๊ธ...tableView.reloadData() // ์ฑ์ด ๋ฒ๋ฒ ๊ฑฐ๋ฆผ ๐ฑ ์์ฒ, ์๋ง ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๋ก๋ํ๋ ค๋ค๊ฐ ์ฑ์ด ๋๋ ค์ง๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํฐ์ง๋ ๊ฒฝ์ฐ ๋ง์ด์์ ๐ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ํ์ด์ง๋ค์ด์ (Pagination) ์ ๋ต์ ์ทจํด์ผํฉ๋๋ค. Why Pagination Matters?ํ์ด์ง๋ค์ด์ ์ ๊ฐ์ฅ ํฐ ์ด์ ๋ ๋ฐ๋ก ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ด์์.// ๐ฑ 10,000๊ฐ ๊ฒ์๊ธ → ์ ์ด ๋๊ธฐ, ๋ฉ๋ชจ๋ฆฌ ์๋ฐฑ..