๋ชฉ๋ก๐ฑ๐ iOS/๐ Apple Developer Documentation (19)
Bibi's DevLog ๐ค๐
์๋ณธ ๋ฌธ์ : Apple Developer Documentation ๊ตฌ์กฐ์ฒด์ ํด๋์ค ์ฌ์ด์์ ์ ํํ๊ธฐ ๋ฐ์ดํฐ์ ๋ชจ๋ธ ํ๋์ ์ด๋ป๊ฒ ์ ์ฅํ ์ง ๊ฒฐ์ ํฉ๋๋ค. ๊ฐ์ ๊ตฌ์กฐ์ฒด์ ํด๋์ค๋ ๋น์ ์ ์ฑ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ, ๊ทธ๋ฆฌ๊ณ ํ๋๋ค์ ๋ชจ๋ธ๋งํ๊ธฐ ์ํ ์ข์ ์ ํ์ ๋๋ค. ํ์ง๋ง ์ด๋ค์ ์ ์ฌ์ฑ์ด ๋ ์ค ํ๋๋ฅผ ์ ํํ๋ ๊ฒ์ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋น์ ์ ์ฑ์ ์๋ก์ด ๋ฐ์ดํฐ ํ์ ์ ์ถ๊ฐํ ๋, ์ด๋ค ์ ํ์ด ํฉ๋ฆฌ์ ์ธ์ง ์ ํํ๋๋ก ๋์์ฃผ๋ ์๋์ ๊ถ์ฅ์ฌํญ์ ๋ฐ๋ฅด๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ญ์์ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํฉ๋๋ค. Objective-C ์ํธ์ด์ฉ์ฑ์ด ํ์ํ ๊ฒฝ์ฐ, ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋น์ ์ด ๋ชจ๋ธ๋งํ๊ณ ์๋ ๋ฐ์ดํฐ์ ๋์ผ์ฑ์ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค๋ฉด, ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ตฌํ์ฌํญ๋ค์ ๊ณต์ ํจ์ผ๋ก์ ํ๋์ ์ฑํํ๊ธฐ ์..
[Array] contains(_:) + ์๊ฐ๋ณต์ก๋ ํ๊ตฌ Apple Developer Documentation ์ํ์ค๊ฐ ์ฃผ์ด์ง ์์๋ฅผ ํฌํจํ๊ณ ์๋์ง๋ฅผ ๋ํ๋ด๋ ๋ถ๋ฆฌ์ธ ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ ์ธ func contains(_ element: Self.Element) -> Bool Element ๊ฐ Equatable ์ ์ค์ํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฆฌํด๊ฐ ๋ง์ฝ ์ํ์ค ๋ด์์ ์ฃผ์ด์ง ์์๊ฐ ๋ฐ๊ฒฌ๋๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false. ํ๋ผ๋ฏธํฐ element : ์ํ์ค์์ ์ฐพ๊ณ ์ ํ๋ ์์. ์ค๋ช ์ด ์์๋ ์ํ์ ์บ์คํธ๋ฅผ ๋ด๊ณ ์๋ ๋ฐฐ์ด์ ๊ฐ์ฅ ์ข์ํ๋ ๋ฐฐ์ฐ๊ฐ ์๋์ง ๋ณด๊ธฐ ์ํด ํ์ธํฉ๋๋ค. let cast = ["Vivien", "Marlon", "Kim", "Karl"] print(cast.contains(..
Apple Developer Documentation reversed() ์ปฌ๋ ์ ์ ์์๋ฅผ ์ญ์์ผ๋ก ๋ํ๋ด๋ ๋ทฐ๋ฅผ ๋ฐํํ๋ค. func reversed() -> ReversedCollection ๋ฐฐ์ด์ ์์๋ฅผ ๋ค์ง์ ๋ ์ ์ฉํ๋ค String ๋ฌธ์์ด๋ ๋ฐฐ์ด์ด๋ฏ๋ก ๋ค์ง์ ์ ์๋ค. ๋ค๋ง ๋ฆฌํดํ์ ์ด ๋ฐฐ์ด์ด ์๋ ReversedCollection์ด๋ฏ๋ก, ํ์ํ๋ค๋ฉด Array๋ String์ผ๋ก ํ๋ณํ ํด์ฃผ์ด์ผ ํ๋ค. ์๋ ํ์ ์ผ๋ก ํ๋ณํํ๋ ค๋ฉด, ์ปฌ๋ ์ ์ sequence-based ๋๋ collection-based ์ด๋์ ๋ผ์ด์ ๋ฅผ ์ธ ์ ์์ด์ผ ๋ณํํ ์ ์๋ค. ReversedCollection์ ์ปฌ๋ ์ ์ ๋ํํ๊ณ , ์์์ ์ญ์์ผ๋ก ์ ๊ทผํ ์ ์๊ฒ ํด ์ค๋ค. let word = "Backwards" for char i..
navigationController.viewControllers Apple Developer Documentation ํ์ฌ navigation stack์ ์กด์ฌํ๋ VC๋ค์ ๋ํ๋ธ๋ค. rootVC๋ 0๋ฒ์งธ ์ธ๋ฑ์ค ์์ ๋งจ ์์ ์์ธ VC๋ ๋งจ ๋ ์ธ๋ฑ์ค์ ์์ (index n-1) back view๋ index n-2 ํด๋น ํ๋กํผํฐ์ ์ ๋ทฐ์ปจ ๋ฐฐ์ด์ ํ ๋นํ๋ ๊ฒ์, setViewControllers(_:animated:) ๋ฅผ ํธ์ถํ๋ ๊ฒ๊ณผ ๊ฐ๋ค. self.navigationController.viewControllers = [issueVC] ์ ๊ฐ์ด ํ ๋นํ๋ฉด, ๊ธฐ์กด์ ์กด์ฌํ๋ navigation stack์ ๋ฌด์ํ๊ณ ์ ๋ทฐ์ปจ์ ํ ๋น ๋ฐ๋ผ์ ๋ค์ ํ๋ฉด์ผ๋ก ๋์ด๊ฐ๋ back๋ฒํผ์ด ์กด์ฌํ์ง ์๋๋ค ์? ๊ธฐ์กด..
Apple Developer Documentation ArraySlice๋ Array์ SubSequence์ด๋ค. SubSequence๋ Collection ํ๋กํ ์ฝ์์ associatedType์ผ๋ก ์๊ตฌํ๋ ๊ฒ Array.SubSequence๋ ArraySlice์ typealias์ด๋ค. https://developer.apple.com/documentation/swift/array/subsequence ๊ฐ์ ArraySlice๋ ํฐ ๋ฐฐ์ด์ ๋ถ๋ถ์ ๋ํ ์ฐ์ฐ์ ๋น ๋ฅด๊ณ ํจ๊ณผ์ ์ผ๋ก ์ํํ๋๋ก ๋์์ค๋ค. ๋ฐฐ์ด์ ์์๋ค์ ์๋ก์ด ๊ณต๊ฐ์ ๋ณต์ฌํ๋ ๋์ , ArraySlice๋ ์ ์ฅ๋ ๋ฐฐ์ด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ด๋ค. Array์ ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ฏ๋ก, ์ผ๋ฐ์ ์ผ๋ก ์๋ณธ ๋ฐฐ์ด๊ณผ ๋๊ฐ์ ์ฐ์ฐ์ slice..
Apple Developer Documentation type(of:) ๊ฐ์ ๋ค์ด๋๋ฏน ํ์ ์ ๋ฐํํฉ๋๋ค. ์ ์ธ func type(of value: T) -> Metatype ๋ฐํ๊ฐ ๋์ ํ์ (= ๋ฉํํ์ metatype ์ธ์คํด์ค) ํ๋ผ๋ฏธํฐ value: ๋์ ํ์ ์ ์ฐพ์ผ๋ ค ํ๋ ๊ฐ ์ค๋ช ์ด type(of:) ํจ์๋ ๊ฐ์ ๋์ ํ์ ์ ์ฐพ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์์ต๋๋ค. ํนํ ๋์ ํ์ ์ด ์ ์ ํ์ ๊ณผ ๋ค๋ฅผ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฐ์ ์ ์ ํ์ (static type) ์ ๊ฐ์ ๋ช ์๋, ์ปดํ์ผ ์์ ์ ํ์ ์ ๋งํฉ๋๋ค. ๊ฐ์ ๋์ ํ์ (dynamic) ์ ์คํ ์์ ์ ๊ฐ์ ์ค์ ํ์ ์ ๋งํ๋ฉฐ, ๊ฐ์ ๊ตฌ์ฒด ํ์ ์ ํ์ ํ์ ์ด ๋ ์ ์์ต๋๋ค. ์๋ ์ฝ๋์์, count ๋ณ์๋ Int๋ผ๋ ๋์ผํ ์ ์ ํ์ ๊ณผ ๋์ ํ์ ..
Apple Developer Documentation swapAt(::) ์ปฌ๋ ์ ์ ์ง์ ์ธ๋ฑ์ค์ ๊ฐ์ ๊ตํํฉ๋๋ค. mutating func swapAt( _ i: Self.Index, _ j: Self.Index ) ํ๋ผ๋ฏธํฐ i : ๊ตํํ 1 ๋ฒ์งธ ๊ฐ์ ์ธ๋ฑ์ค j : ๊ตํํ 2 ๋ฒ์งธ ๊ฐ์ ์ธ๋ฑ์ค ์ค๋ช ๋ ํ๋ผ๋ฏธํฐ๊ฐ ๋ชจ๋ endIndex์ ๊ฐ์ง ์์, ์ปฌ๋ ์ ์ ์ ํจํ ์ธ๋ฑ์ค๋ค์ด์ด์ผ ํฉ๋๋ค. i ์ j ์ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด **swapAt(_:_:) ๋ฅผ ํธ์ถํ๋ ๊ฒ์ ์๋ฌด ํจ๊ณผ๊ฐ ์์ต๋๋ค. ๋ณต์ก๋ O(1)
Apple Developer Documentation enumerate ์ด๊ฑฐํ๋ค (n, x)์์ ์ํ์ค๋ฅผ ๋ฐํํฉ๋๋ค. n์ 0๋ถํฐ ์์ํ๋ ์ฐ์์ ์ธ integer๋ฅผ ์๋ฏธํ๋ฉฐ, x๋ ์ํ์ค์ ์์๋ฅผ ๋ํ๋ ๋๋ค. ์ ์ธ func enumerated() -> EnumeratedSequence ๋ฆฌํด๊ฐ ์ํ์ค๋ฅผ ์ด๊ฑฐํ๋ ์์ ์ํ์ค๋ฅผ ๋ฐํํฉ๋๋ค. ์๊ฐ๋ณต์ก๋ : O(1) ์ค๋ช ์ด ์์๋ “Swift” ๋ผ๋ ๋ฌธ์์ด์ ๋ฌธ์๋ฅผ ์ด๊ฑฐํ๊ณ , ๋ฌธ์์ด ์์ ๊ฐ ๋ฌธ์๋ฅผ ๊ทธ ์๋ฆฌ์ ํจ๊ป ์ถ๋ ฅํฉ๋๋ค. for (n, c) in "Swift".enumerated() { print("\(n): '\(c)'") } // Prints "0: 'S'" // Prints "1: 'w'" // Prints "2: 'i'" // Prints "3: ..