printvoid main() { String name = "kim"; print(name); // kim print("name: ${name}"); // name: kim print("name: $name"); // name: kim} dynamic์ varvar๋ ์ฒ์ ์ ์ธํ ๊ทธ ํ์
์ด ์ ์ง๊ฐ ๋ฉ๋๋ค. ๋ฐ๋ฉด์ dynamic์ ์ฒ์ ์ ์ธํ ํ์ ๋ค๋ฅธ ํ์
์ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๊ฒ ๋๋ฉด ๋ณ๊ฒฝํ ๊ฐ์ ํ์
์ผ๋ก ๋ฐ๋๊ฒ ๋ฉ๋๋ค. dynamicvoid main() { dynamic name1 = "kim"; print(name1); // kim print(name1.runtimeType); // String name1 = 12; print(name1.runtimeType); // int}varvoid ..
๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
SwiftUI๋ฅผ ์ดํดํ๊ธฐ ์ํ ๋ ๊ฐ์ง ๊ฐ๋
๋ฐ ์์นData Access as a DependencySource of Truth Data Access as a Dependency๋ทฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋๋ง๋ค ํด๋น ๋ทฐ์ ๋ํ ์ข
์์ฑ์ ์์ฑํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ทฐ๊ฐ ๋ณ๊ฒฝ๋์ด ์ ๊ฐ์ ๋ฐ์ํด์ผ ํฉ๋๋ค. ๋ํ ์ด ์ข
์์ฑ์ ์ ์ํ๋ ๊ฒ์ ์๋ ํ๋ก์ธ์ค์ด๋ฉฐ ๋ณต์กํ ์์
์ด ๋ ์ ์์ต๋๋ค. ํ์ง๋ง SwiftUI๋ ๋ฐ์ดํฐ ์ข
์์ฑ๋ ์ ์ธ์ ์
๋๋ค. ๋ช ๊ฐ์ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ ์์ํฌ์ ๋ํ ์ข
์์ฑ์ ์ค๋ช
ํ๊ธฐ๋ง ํ๋ฉด ํ๋ ์์ํฌ๊ฐ ๋๋จธ์ง ๋ชจ๋ ๊ฒ์ ์ฒ๋ฆฌํฉ๋๋ค. ์ฌ์ฉ์์๊ฒ๋ ๊ฒฝํ ๊ตฌ์ถ์ ์ง์คํ ์ ์์ต๋๋ค. Source of Truth๋ทฐ ๊ณ์ธต์์ ์ฝ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ ์์ฒ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํฉ๋๋ค. ๋์ผํ ๋ฐ์ดํฐ ์์๋ ํญ์..
CombineCombine์ ์ฌ์ฉํ๋ฉด ์๊ฐ์ ํ๋ฆ์ ๋ฐ๋ผ ๊ฐ์ ์ฒ๋ฆฌํ ์ ์๋ ํตํฉ๋ API๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.https://kiuun.tistory.com/66 [Combine/WWDC2019] Combine๊ณผ Publisher, Subscriber, OperatorCombineCombine์ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ํตํฉ์ ์ด๊ณ ์ ์ธ์ ์ธ API์
๋๋ค. Cocoa SDK์๋ ์ฌ๋ฌ ๊ฐ์ง ๋น๋๊ธฐ ์ธํฐํ์ด์ค๊ฐ ์กด์ฌํฉ๋๋ค. ํ์ง๋ง ์ด๊ฒ๋ค์ ํจ๊ป ์ฌ์ฉํ ๋ ์ด๋ ค์์ ๊ฒช๊ฒ ๋ฉkiuun.tistory.com Combine์ ์ฌ์ฉํ์ฌ ์์ ๊ตฌํํ๊ธฐWWDC ์์์์ Combine์ ์ฌ์ฉํ๊ธฐ ์ํ ์์ ๋ก ๋ง๋ฒ ํ๊ต๋ฅผ ์ํ ์ฑ์ ๊ฐ๋ฐํ๋ ค๊ณ ํฉ๋๋ค. ์ฑ์ ๊ธฐ๋ฅ์ ์ด๋ ํ ๋ง๋ฒ์ ๋ค์ด๋ก๋ํ๊ธฐ ์ํด Combine์..
SwiftUI ๋ด๋ถ ์๋ ์๋ฆฌ ์ดํดํ๊ธฐSwiftUI๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ด๋ค ์์
์ ์ํํ๋์ง ์ดํดํ๊ธฐ ์ํด์ ์ฝ๋๋ฅผ ๋ณผ ๋ ์๋ ์ธ ๊ฐ์ง๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.Identity: SwiftUI๊ฐ ์ฑ์ ์์๋ฅผ ์
๋ฐ์ดํธํ๊ธฐ ์ํด์ ์์๋ฅผ ๋์ผํ๊ฒ, ๋๋ ์๋ก ๋ค๋ฅด๊ฒ ์ธ์ํ๋ ๋ฐฉ๋ฒLifetime: SwiftUI๊ฐ ์๊ฐ์ ๋ฐ๋ผ ๋ทฐ์ ๋ฐ์ดํฐ์ ์กด์ฌ๋ฅผ ์ถ์ ํ๋ ๋ฐฉ๋ฒDependencies: SwiftUI๊ฐ ์ธํฐํ์ด์ค๋ฅผ ์ธ์ ์
๋ฐ์ดํธํ๊ณ , ์ด๋ฅผ ์ดํดํ๋ ๋ฐฉ๋ฒ View Identity์๋ ์ฌ์ง์์๋ ํ๋ฉด ์ด๋๋ ํญํ๋ฉด ์ํ๋ฅผ ์ ํํ ์ ์์ต๋๋ค.์์ด์ฝ์ ์ด์ฒจ์ ๋ง์ถ์ด ๋ณด๋ฉด, ์๋ก ์์ ํ ๋ค๋ฅธ ๋ทฐ๋ก ๋ณด๋์ง ์๋๋ฉด ์์น์ ์์๋ง ๋ค๋ฅผ ๋ฟ ๊ฐ์ ๋ทฐ๋ก ๋ณด๋์ง์ ๋ฐ๋ผ ์ธํฐํ์ด์ค์ ์ํ๋ฅผ ์ ํํ๋ ๋ฐฉ์์ด ๋ฌ๋ผ์ง๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก View I..
CombineCombine์ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ํตํฉ์ ์ด๊ณ ์ ์ธ์ ์ธ API์
๋๋ค. Cocoa SDK์๋ ์ฌ๋ฌ ๊ฐ์ง ๋น๋๊ธฐ ์ธํฐํ์ด์ค๊ฐ ์กด์ฌํฉ๋๋ค. ํ์ง๋ง ์ด๊ฒ๋ค์ ํจ๊ป ์ฌ์ฉํ ๋ ์ด๋ ค์์ ๊ฒช๊ฒ ๋ฉ๋๋ค. Combine์ ํตํด ์ฌ๋ฌ ๊ฐ์ง ๋น๋๊ธฐ ์ธํฐํ์ด์ค๋ค์ ํจ๊ป ์ฌ์ฉํ์ฌ ์ด๋ ค์์ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ฌ๋ฌ ๊ฐ์ง ๋น๋๊ธฐ ์ธํฐํ์ด์คTarget/ActionNotification centerURLSessionKey-value observingAd-hoc callbacks Combine FeaturesCombine์ Swift๋ก ์์ฑ๋์์ผ๋ฉฐ Swift๋ฅผ ์ํด ์์ฑ๋์์ต๋๋ค. ์ฆ, Generics๊ณผ ๊ฐ์ Swift ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ต๋๋ค. Generic: Generics๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฑํด์ผ ํ๋..
View controllerview controller๋ UIKit ์ฑ์ ์ธํฐํ์ด์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ๋จ์ผ root view๋ฅผ ๊ด๋ฆฌํ๊ณ ๋จ์ผ ๋ทฐ์๋ ์ฌ๋ฌ ๊ฐ์ ํ์ ๋ทฐ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ์ ๋ํ ์ฌ์ฉ์ ์ํธ์์ฉ์ view controller์์ ์ฒ๋ฆฌํ๋ฉฐ, ํ์์ ๋ฐ๋ผ ์ฑ์ ๋ค๋ฅธ ๊ฐ์ฒด์ ์กฐ์ ํฉ๋๋ค. view controller๋ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค.๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ๋ํ ์๋ต์ผ๋ก view ์
๋ฐ์ดํธview๋ฅผ ํตํ ์ฌ์ฉ์ ์ํธ์์ฉ์ ์๋ตview ํฌ๊ธฐ ์กฐ์ ๋ฐ ์ธํฐํ์ด์ค ๋ ์ด์์ ๊ด๋ฆฌ์ฑ์ ๋ค๋ฅธ ๊ฐ์ฒด์์ ์กฐ์ (๋ค๋ฅธ view controller๋ฅผ ํฌํจํ ๊ฐ์ฒด) UIViewUIView๋ ์ปจํธ๋กค๋ฌ๊ฐ ๊ด๋ฆฌํ๋ view๋ก, view controller์ ๋ทฐ ๊ณ์ธต์ root view๋ฅผ ๋ํ๋
๋๋ค.๊ธฐ๋ณธ..
์ฑ์ Lifecycle ๊ด๋ฆฌํ๊ธฐ์ฑ์ ํ์ฌ ์ํ์ ๋ฐ๋ผ ์ธ์ ๋ ์ง ํ ์ ์๋ ์ผ๊ณผ ํ ์ ์๋ ์ผ์ด ๊ฒฐ์ ๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ ์ฑ์ ์ํ๊ฐ ๋ณํํ ๋๋ง๋ค ์ฑ์ ๋์์ ์ ์ ํ๊ฒ ์กฐ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค.foreground ์ฑ์ ์ฌ์ฉ์ ์ฃผ์๋ฅผ ๋๊ธฐ ๋๋ฌธ์ CPU๋ฅผ ํฌํจํ ์์คํ
๋ฆฌ์์ค์ ์์ด ์ฐ์ ๊ถ์ ๊ฐ์ต๋๋ค.background ์ฑ์ ํ๋ฉด์ ๋ํ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋๋๋ก์ด๋ฉด ๋์ํ์ง ์์์ผ ํฉ๋๋ค. iOS 13๋ถํฐ๋ Scene-based ์ฑ์์ UISceneDelegate ๊ฐ์ฒด๋ฅผ ํตํด์ ๋ผ์ดํ ์ฌ์ดํด ์ด๋ฒคํธ์ ๋์ํฉ๋๋ค.iOS 12์ ์ด์ ๋ฒ์ ์์๋ UIApplicationDelegate ๊ฐ์ฒด๋ฅผ ํตํด์ ๋ผ์ดํ ์ฌ์ดํด ์ด๋ฒคํธ๋ฅผ ๋์ํฉ๋๋ค. Scene ๊ธฐ๋ฐ ๋ผ์ดํ ์ฌ์ดํด (iOS 13 ์ด์)Scene์ ์ง์ํ๋ ์ฑ์ ๊ฒฝ์ฐ U..
Fileํ์ผ์ ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ ์ด๋ฆ์ ๋ถ์ธ ๊ฒ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋นํ๋ฐ์ฑ์ ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์ ์ฅํ๊ณ , ์ด์์ฒด์ ๋ ๋ค์ํ ์ ์ฅ ์ฅ์น๋ฅผ ํ์ผ์ด๋ผ๋ ๋์ผํ ๋
ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋ณผ ์ ์๊ฒ ํ๋ค.Operation: create, read, write, delete, open, close ๋ฑ File attribute (Metadata)๋ฉํ๋ฐ์ดํฐ๋ ํ์ผ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ์ข
์ ๋ณด๋ค์ ๋งํ๋ค.ํ์ผ์ ์ด๋ฆ, ์ ํ, ์ ์ฅ ์์น, ํ์ผ ์ฌ์ด์ฆ ๋ฑ์ ๊ทผ ๊ถํ(์ฝ๊ธฐ/์ฐ๊ธฐ/์คํ), ์๊ฐ(์์ฑ/๋ณ๊ฒฝ/์ฌ์ฉ), ์์ ์ ๋ฑ file metadata ๋ณด๊ด ์์น๋๋ ํ ๋ฆฌ ๋ด์ ์ง์ ๋ณด๊ดํ๊ธฐ๋ ํ๋ฉฐ, ๋๋ ํ ๋ฆฌ์๋ ํฌ์ธํฐ๋ฅผ ๋๊ณ ๋ค๋ฅธ ๊ณณ์ ๋ณด๊ดํ๊ธฐ๋ ํ๋ค. (Inode, FAT ๋ฑ)file name์ด ๊ธด ๊ฒฝ์ฐ์ ๋ณด๊ดํ๋ ๋ฐฉ๋ฒ์ ๋ฆฌ์คํธ์์ ๊ฐ e..
Demand Paging ๊ธฐ๋ฒ์์ฒญ์ด ์์ ๋(์ค์ ๋ก ํ์ํ ๋) ๊ทธ ํ์ด์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ์ด๋ค.์ค์ ๋ก ๋๋ถ๋ถ์ ์์คํ
์ Paging ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค. ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ ๊ทธ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์ฃผ์ ๊ณต๊ฐ์ ํ์ด์ง๋ฅผ ํ๊บผ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ, Demand Paging ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์ด๋ ํ ํ์ด์ง๊ฐ ์์ฒญ์ด ๋์์ ๋๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค. ์ฅ์ I/O ์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๊ฐ์๋น ๋ฅธ ์๋ต์๊ฐ๋ ๋ง์ ์ฌ์ฉ์ ์์ฉ Valid/Invalid ์ฌ์ฉํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ํ์ด์ง๋ค ์ค์์ ๋น์ฅ ํ์ํ ๋ถ๋ถ์ Demand Paging์ ์ํด์ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ค. ๊ทธ๋ ์ง ์์ ๋ถ๋ถ์ Backing Store(Swap area)์ ๋ด๋ ค๊ฐ ์๊ฒ ๋๋ค.๋ฐ๋ผ์ Invalid์ ์๋ฏธ๋ ํ์ด์ง๊ฐ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ..
๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฒ๋ฉ๋ชจ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฎ์ ์ฃผ์ ์์ญ์ ์ด์์ฒด์ ์ปค๋์ด ์์ฃผํ๊ณ ์๋ ์์ญ๊ณผ ๋์ ์ฃผ์ ์์ญ์ ์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ์ผ๋ก ๋๋์ด ์ฌ์ฉ๋๋ค.์ฌ์ฉ์ ํ๋ก์ธ์ค ์์ญ์ ์ด๋ป๊ฒ ํ ๋นํ๊ณ ๊ด๋ฆฌํ๋์ง์ ๋ฐ๋ผ ํฌ๊ฒ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋๋๋ค.์ฐ์ ํ ๋น(Contiguous Allocation)๋ถ์ฐ์ ํ ๋น(Noncontiguous Allocation) ์ฐ์ ํ ๋น(Contiguous Allocation)๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ธ ๊ณต๊ฐ์ ์ ์ฌ๋๋๋ก ํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ๋ ๊ฐ์ง ๋ฐฉ์์ด ์๋ค.๊ณ ์ ๋ถํ ๋ฐฉ์(Fixed Partition Allocation)๊ฐ๋ณ ๋ถํ ๋ฐฉ์(Variable Partition Allocation) ๊ณ ์ ๋ถํ ๋ฐฉ์๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ตฌ์ ์ผ๋ก ๋ฏธ๋ฆฌ ๋ถํ (ํํฐ์
)๋ก ๋๋๋ ๊ฒ์ ์..