๋๊ธฐ & ๋น๋๊ธฐ synchronous๋ ์์
์ ๋๊ธฐ์ ์ผ๋ก ์คํ. ์คํ ์ค์ธ ์์
์ด ๋๋ ๋ ๊น์ง ๋ค๋ฅธ ์์
์ ๊ธฐ๋ค๋ฆผ asynchronous๋ ๋น๋๊ธฐ๋ก ํ์ฌ ์คํ ์ค์ธ ์์
์ด ์์ด๋ ๋ค๋ฅธ ์์
์ ์คํ ํ ์ ์๋ค. ์ค๋ ๊ฑธ๋ฆฌ๋ ์์
์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํด์ ๋ฉ์ธ ์ค๋ ๋์์ ํ์๋ก ํ๋ ์์
์ด ๋ฉ์ถ์ง ์๊ฒ ํ๋ค. MainActor UI ๊ด๋ จ ์์
์ ๋ฉ์ธ ์ค๋ ๋์์ ์คํ๋์ด์ผ ํ๋๋ฐ, MainActor๋ ์ด๋ฅผ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค๋ค. UI ์
๋ฐ์ดํธ์ ๊ด๋ จ๋ ์์
์ ๋ฉ์ธ ์ค๋ ๋์์ ์คํํ๋๋ก ๋ณด์ฅํ๋ค. ๋น๋๊ธฐ ์์
์์ ๋ฉ์ธ ์ค๋ ๋๋ก์ ์ ๊ทผ์ ์์ ํ๊ฒ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ค๋ ๋ ์์ ์ ์ด๋ฉฐ DispatchQueue.main.async์ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์์ด ๊ฐ๊ฒฐํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค. struct Def..
Swift 5.1๋ถํฐ ์ฌ์ฉ๊ฐ๋ฅ getter, setter, computed property ์ฝ๋ ์ค๋ณต์ ์ค์ผ ์ ์์ ์ฐ์ฐ ํ๋กํผํฐ ๋ก์ง์ ๊ณต์ ํ๋ ๋ฐฉ๋ฒ ๊ธฐ๋ณธ ์ฐ์ฐ ํ๋กํผํฐ์ ๊ธฐ๋ฅ์ ๊ฐ๋ณ ํด๋์ค์ ๊ตฌ์กฐ์ฒด์ ๋ถ๋ฆฌํ ์ ์๊ฒ ํ์ฌ ์ฑ ์ฝ๋์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ํจ ํ๋กํผํฐ ๋ํผ ๊ตฌํ @propertyWrapper struct Tenfold { private(set) var num: Int = 0 var wrappedValue: Int { get { num } set { num = newValue * 10 } } init(wrappedValue value: Int) { self.wrappedValue = value } } @propertyWrapper ์ง์์๋ฅผ ์ด์ฉํ์ฌ ์ ์ธ ํด๋์ค๋ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ ๊ฐ๋ฅ..
์ ์ธ struct ํค์๋๋ฅผ ์ฌ์ฉํด์ ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ธํฉ๋๋ค. ํด๋์ค๋ฅผ ์ ์ธํ ๋ class ํค์๋๋ฅผ ์ฌ์ฉํ ๊ฒ๊ณผ ๋์ผํ ๋ฐฉ์์
๋๋ค. struct Animal { var name: String var location: Float } ์ธ์คํด์ค ์์ฑ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋์ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ธํฉ๋๋ค. let dog = Animal(name: "Dog", location: 24.566) ํ๋กํ ์ฝ ์ฑํ ํด๋์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋กํ ์ฝ์ ์ฑํํ ์ ์์ต๋๋ค. struct MyApp: App { var body: some Scene { WindowGroup { ContentView() } } } SwiftUI์์ ์ฑ์ด ์คํ๋ ๋ ์ฒ์ ์คํ๋๋ @main ์ด ์๋ ์ฝ๋๋ฅผ ์ดํด ๋ณด๋ฉด ํ๋ก์ ํธ ์ด๋ฆ์ ๊ฐ์ง ๊ตฌ์กฐ์ฒด๊ฐ ํ๋..