ARC ์๋ ์ฐธ์กฐ ์นด์ดํ Automatic Reference Counting swift๋ ARC๋ก ์ธ์คํด์ค๊ฐ ํ์ํ์ง ์์ ๋ ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํด์ค๋ค. ๋น์ฐํ๊ฒ๋ struct์ enum์ ๊ฐ์ ๋ณต์ฌํ๋ valueํ์ ์ด๊ธฐ ๋๋ฌธ์ ํด๋น๋์ง ์๊ณ ์ฐธ์กฐ ํ์ ์ธ class์ ์ธ์คํด์ค์๋ง ์ฐธ์กฐ ์นด์ดํ ์ด ์ ์ฉ๋๋ค. ์๋ฐ์์ ์ฌ์ฉํ๋ ๊ฐ๋น์ง ์ฝ๋ ์ (GC)์ ๋ค๋ฅธ์ ์ GC๋ ๋ฐํ์๋ ๊ณ์ ์ฐธ์กฐ๋ฅผ ์ถ์ ํ๊ณ RC๋ ์ปดํ์ผ๋ ๋ชจ๋ ๊ฒฐ์ ์ด ๋๋ค๋ ์ฐจ์ด์ ์ด ์๋ค. ARC์ ์๋ ์๋ฆฌ ํด๋์ค์ ์๋ก์ด ์ธ์คํด์ค๊ฐ ์์ฑ๋ ๋๋ง๋ค ARC๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํด์ค ์ธ์คํด์ค๊ฐ ๋์ด์ ํ์์น ์์ ๋ ARC๊ฐ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ํด์ ํด์ค ์ฌ์ฉ์ค์ธ ์ธ์คํด์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ ํด์ ํ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ์ธ์คํด์ค์ ๊ฐํ ์ฐธ์กฐ (strong reference)..
ํ๋กํ ์ฝ (Protocols) ๋ฐ๋ผ์ผํ๋ ์๊ตฌ ์ฌํญ์ ์ ์ํ๋ค. class SomeClass: SomeSuperclass, FirstProtocol, AnotherProtocol { // class definition goes here } ์์ฑ ์์ : ๋ถ๋ชจํด๋์ค ๋จผ์ ์์ฑํ๊ณ ๊ทธ ๋ค์์ ํ๋กํ ์ฝ์ ์ฑํํ๋ค. protocol SomeProtocol { var mustBeSettable: Int { get set } var doesNotNeedToBeSettable: Int { get } } ๊ฐ ํ๋กํผํฐ๊ฐ gettable ์ธ์ง gettable๊ณผ settable ์ธ์ง ์ง์ ํด์ค์ผ ํจ mutating ๋ฉ์๋ ์๊ตฌ์ฌํญ protocol Togglable { mutating func toggle() } enum On..
๊ตฌ์กฐ์ฒด์ ํด๋์ค (Structures and Classes) ๊ณตํต์ ๊ฐ์ ์ ์ฅํ ํ๋กํผํฐ๋ฅผ ์ ์ธํ ์ ์๋ค. ํจ์์ ๊ธฐ๋ฅ์ ํ๋ ๋ฉ์๋๋ฅผ ์ ์ธ ํ ์ ์๋ค. ๋ด๋ถ ๊ฐ์. ์ ์ฌ์ฉํ์ฌ ์ ๊ทผํ ์ ์๋ค. ์์ฑ์๋ฅผ ์ฌ์ฉํด ์ด๊ธฐ ์ํ๋ฅผ ์ค์ ํ ์ ์๋ค. extension์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์๋ค. Protocol์ ์ฑํํ์ฌ ๊ธฐ๋ฅ์ ์ค์ ํ ์ ์๋ค. Class (ํด๋์ค) class VideoMode { var resolution = Resolution() var interlaced = false var frameRate = 0.0 var name: String? } let tenEighty = VideoMode() let alsoTenEighty = tenEighty if tenEighty === als..
์ด๊ฑฐํ (Enumerations) enum CompassPoint { case north case south case east case west } enum Planet { case mercury, venus, earth, mars, jupiter, saturn, uranus, neptune } ์ฝค๋ง๋ก ๊ตฌ๋ถํ์ฌ ํ์ค๋ก ํ๊ธฐํ ์ ์๋ค. enum Beverage: CaseIterable { case coffee, tea, juice } let numberOfChoices = Beverage.allCases.count ์ด๊ฑฐํ ์ด๋ฆ ๋ค์ : CaseIterable ์ ์์ฑ → allCases ํ๋กํผํฐ๋ array๋ก ๊ด๋ จ ๋ฉ์๋ ์ฌ์ฉ ๊ฐ๋ฅ ์ฐ๊ด๋ ๊ฐ (Associated Values) enum Barcode {..