์๋ ํ์ธ์.
๊ฐ์ ๊ธ์ก์ด ๋ถ๋ด๋์๋ ๋ถ๋ค์ ๊ฐ์๋ช ์ ์๋ ์ด๋ฉ์ผ๋ก ๋ณด๋ด์ฃผ์๋ฉด ํ ์ธ์ฟ ํฐ์ ๋ณด๋ด๋๋ฆฝ๋๋ค.
apple-developer@kakao.com
iOS ๊ฐ๋ฐ์ ์ธ๊ณ์ ๋ฐ์ ๋ค์ด๊ฒ ๋ ์ง ๋ฒ์จ 10๋ ์ด ํ๋ ์ต๋๋ค.
๊ทธ ๋์ ๋ค์ํ ํ๊ฒฝ์์ 100์ฌ๊ฐ๊ฐ ๋๋ ํ๋ก์ ํธ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์นญํ๋ ๋ฐ ์ฐธ์ฌํ์์ต๋๋ค. ์ด๋ฐ ๋ค์ํ ๊ฒฝํ์ ํตํด, ์ค๋ฌด์์์ ๊น์ ๋ ธํ์ฐ์ ํต์ฐฐ์ ์ป์ ์ ์์์ต๋๋ค.
์ด๋ฐ ์ง์์ ๋ชจ์ ์ ์ ๊ฐ์ ์ด์ ์ ๊ฐ์ง ๊ฐ๋ฐ์ ๋ถ๋ค๊ณผ ํจ๊ป ์ฑ์ฅํ๊ธฐ ์ํด. ํญ์ ๋ ๋์ ๋ฐฉ๋ฒ, ๋ ํจ์จ์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ฐ๊ตฌํ๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ํํ๋ก ์ ์ํ์ฌ ์ฌ๋ฌ๋ถ๋ค๊ณผ ๊ณต์ ํ๊ณ ์์ต๋๋ค.
ํจ๊ป ์ฑ์ฅํ๋ ์ฌ์ ์ ๋ํํ์ค ์ค๋น๊ฐ ๋์ จ๋ค๋ฉด, ์ ์ ํจ๊ป ์์ํด๋ด ์๋ค.
Courses
Reviews
- Successful Real iOS Design Guide - [Autolayout With Code]
- Successful Real iOS Design Guide - [Autolayout With Code]
- Becoming a Successful Real iOS Developer [From Basics to Practice]
- UIKit - iOS14 Practical Guide <Becoming a Real iOS App Developer>
- SwiftUI - iOS14 Perfect Guide
Posts
Q&A
Function Types Error
์์ Xcode์์๋ ๋์์ฑ ๊ฒ์ฌ๊ฐ ๋์จํด์ ์คํ๋์ง๋ง, ์ต์ Swift์์๋ ์ ์ญ ๊ฐ๋ณ ๋ณ์์ธ calc๋ฅผ MainActor ์์ญ ๋ฐ์์ ๋ณ๊ฒฝํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.calc์ ์ด์ ์ ๊ทผํ๋ ํจ์๋ค์ ๋ชจ๋ @MainActor๋ก ์ง์ ํ๋ฉด ๋์ํฉ๋๋ค.func plus(n1: Int, n2: Int) -> Int { return n1 + n2 } func minus(n1: Int, n2: Int) -> Int { return n1 - n2 } // ํจ์๋ฅผ ์ ์ฅํ๋ ์ต์ ๋ ๋ณ์ @MainActor var calc: ((Int, Int) -> Int)? @MainActor var target1 = 1 @MainActor var target2 = 3 // calc๋ฅผ ๋ณ๊ฒฝํ๋ฏ๋ก @MainActor ์ง์ @MainActor func selectButton(type: String) { if type == "+" { calc = plus } else if type == "-" { calc = minus } else { calc = nil } } // calc์ target ๊ฐ์ ์ฌ์ฉํ๋ฏ๋ก @MainActor ์ง์ @MainActor func showResult() { if let result = calc?(target1, target2) { print(result) } else { print("์ฐ์ฐ์๊ฐ ์ ํ๋์ง ์์์ต๋๋ค.") } } // ์คํ selectButton(type: "+") showResult() // 4calc์ ์ต์ ๋ ํจ์ ํ์ ๊ณผ calc = plus ๊ฐ์ ํจ์ ํ ๋น ๋ฐฉ์์ ์ ์์ ๋๋ค.์๋ฌ์ ์์ธ์ calc๊ฐ MainActor์ ์ํด ์๋๋ฐ, ๊ธฐ์กด์ selectButton๊ณผ showResult๊ฐ MainActor์ ์ํ์ง ์์ ์ํ๋ก ์ ๊ทผํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- Likes
- 0
- Comments
- 1
- Viewcount
- 35
Q&A
ํด๋ก์ ์ ํํ๋ก ๋ง๋ค๋ค
์ดํดํ๊ธฐ ์ฝ๊ฒ ์ ๋ฌํ๊ธฐ ์ํด โํจ์๋ฅผ ํด๋ก์ ํํ๋ก ๋ง๋ค์๋คโ๋ผ๊ณ ํํํ์ง๋ง, ์ ํํ๋ ํด๋ก์ ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ ํจ์๋ฅผ ๋ง๋ค์๋ค๋ ์๋ฏธ์ ๋๋ค.ํด๋ก์ ๋ ์คํํ ์ฝ๋๋ฅผ ํ๋์ ๊ฐ์ฒ๋ผ ํํํ ๊ฒ์ผ๋ก, ๋ณ์์ ์ ์ฅํ๊ฑฐ๋ ๋ค๋ฅธ ํจ์์ ์ ๋ฌํ ์ ์์ต๋๋ค.์ฝ๋ฐฑ์ ๋ํด์๋ ๊ฐ๋จํ ์ ๋ฆฌํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.ํด๋ก์ ๊ฐ ์ฝ๋ฐฑ์ธ์ง ํ๋จํ ๋๋ ํด๋น ํด๋ก์ ๊ฐ ๋ค๋ฅธ ํจ์์ ์ ๋ฌ๋๊ณ , ์ ๋ฌ๋ฐ์ ํจ์์ ์ํด ํธ์ถ๋๋์ง๋ฅผ ๋ณด๋ฉด ๋ฉ๋๋ค.// ์คํํ ์ฝ๋๋ฅผ work๋ผ๋ ๋ณ์์ ํด๋ก์ ๋ก ์ ์ฅํฉ๋๋ค. let work = { print("์์ ์๋ฃ") } // ํด๋ก์ ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ ํจ์์ ๋๋ค. func run(completion: () -> Void) { print("์์ ์์") // run์ด ์ ๋ฌ๋ฐ์ ํด๋ก์ ๋ฅผ ํธ์ถํฉ๋๋ค. // ์ด๋ completion์ผ๋ก ์ ๋ฌ๋ ํด๋ก์ ๊ฐ ์ฝ๋ฐฑ ์ญํ ์ ํฉ๋๋ค. completion() } // work๋ฅผ ์ง์ ํธ์ถํฉ๋๋ค. // ๋ค๋ฅธ ํจ์์ ์ ๋ฌํ์ง ์์์ผ๋ฏ๋ก ์ผ๋ฐ์ ์ธ ํด๋ก์ ์คํ์ ๋๋ค. // ์ด ๊ฒฝ์ฐ work๋ ์ฝ๋ฐฑ์ด ์๋๋๋ค. work() // work๋ฅผ run์ ์ ๋ฌํฉ๋๋ค. // run ๋ด๋ถ์์ completion()์ ํธ์ถํ๋ฉด ์ค์ ๋ก work๊ฐ ์คํ๋ฉ๋๋ค. // ์ด ๊ฒฝ์ฐ work๋ ์ฝ๋ฐฑ ์ญํ ์ ํฉ๋๋ค. run(completion: work)๊ฒฐ๋ก ์ ์ผ๋ก ํด๋ก์ ์ ์ฝ๋ฐฑ์ ๊ฐ์ ๊ฐ๋ ์ด ์๋๋๋ค.ํด๋ก์ ๋ฅผ ๊ทธ๋ฅ ์ง์ ํธ์ถํ๋ฉด ์ผ๋ฐ์ ์ธ ํด๋ก์ ์คํ์ด๊ณ , ํด๋ก์ ๋ฅผ ๋ค๋ฅธ ํจ์์ ์ ๋ฌํ ๋ค ๊ทธ ํจ์๊ฐ ํธ์ถํ๋๋ก ํ๋ฉด ์ฝ๋ฐฑ์ผ๋ก ์ฌ์ฉํ ๊ฒ์ ๋๋ค.์ ์์ ์์๋ completion()์ด ์ ๋ฌ๋ฐ์ work๋ฅผ ์คํํ๊ฒ ๋ง๋ค์๊ณ ์ด๋ ๊ฒ ๋ง๋ค์ด์ ์ด ํธ์ถ๋ก ์ธํด work๊ฐ ์ฝ๋ฐฑ ์ญํ ์ ํ๊ฒ ๋ฉ๋๋ค.
- Likes
- 0
- Comments
- 1
- Viewcount
- 43
Q&A
ํจ์ฑ1๊ฐ์์ ๊ฐ์์ค์ ์ง๋ฌธ ์์ต๋๋ค.
์๋ ํ์ธ์. ์ ์์ ์๋ณธ์ ๋ณด๋ ํธ์ง์ค์ ํ๋ง๋๊ฐ ์๋ชป ๋ค์ด๊ฐ๋ค์๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์ค๊ฒ ๋ฉ๋๋ค ๋ผ๊ณ ์ดํดํ์๋ฉด ๋ฉ๋๋ค. ํผ๋์ ๋๋ ค ์ฃ์กํฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 100
Q&A
์๋ฌ ์ง๋ฌธ [UITextField setDataSource:]: unrecognized selector sent to instance 0x107079600"
์๋ ํ์ธ์IBOutlet์ผ๋ก ์ฐ๊ฒฐํ ๋ PickerView๋ฅผ TextField์ ์ฐ๊ฒฐํ๋ค๊ฑฐ๋ ํ๋๋ฑ ์๋ชป ์ฐ๊ฒฐ๋๊ฒ ์๋์ง ํ๋ฒ ํ์ธ์ด ํ์ํด ๋ณด์ ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 234
Q&A
Closure_3 Capture List์ ์ฐธ์กฐ ํ์ ๊ฐ์ ์์ฑํ ๊ฒฝ์ฐ์๋ deinit ์คํ๋๋ ์ด์ ๊ฐ ๋ญ๊น์?
์๋ ํ์ธ์ nil์ ์ค๋ ์์ด์ง์ง ์๊ฒ ๋๋ ค๋ฉด ์๋ก ๊ฐํ์ฐธ์กฐ ์ํ๊ฐ ๋๋ ์ฆ ์ํ์ฐธ์กฐ ์ํ๋ก ๋ง๋ค์ด์ผ ๋ฉ๋๋ค.๊ทธ๋ฌ๊ธฐ ์ํด์๋ SomeClass๋ ํด๋ก์ ๋ฅผ ๊ฐํ๊ฒ ์ฐธ์กฐํ๊ณ ์์ด์ผ ํ๊ณ ํด๋ก์ ๋ SomeClass๋ฅผ ๊ฐํ๊ฒ ์ฐธ์กฐํ๊ณ ์์ด์ผ ํฉ๋๋ค. SomeClass์ ๋ค์์ฒ๋ผ ํ๋กํผํฐ๋ฅผ ๋ง๋ค๊ณ var c: TestClass?๋งค์๋๋ ๋ค์์ฒ๋ผ ๋ณ๊ฒฝํด ๋ณด์ธ์ lazy var myClosure3 = { [b] in print(b) self.c = b } ๊ทธ๋ฆฌ๊ณ nil๋ก ์ค์ ํ๊ธฐ ์ ์ ๋ค์์ฒ๋ผ ํด๋ก์ ๋ฅผ ์คํ์์ผ์ผ ์๋ก ๊ฐํ์ฐธ์กฐ๋ฅผ ํ๊ณ ์๋ ์ํ๊ฐ ๋์ด deinit์ด ํธ์ถ ์๋๋๊ฑธ ํ์ธํ์ค ์ ์์ต๋๋ค. myClass1?.myClosure3()
- Likes
- 0
- Comments
- 2
- Viewcount
- 197
Q&A
movieapp 3 46๋ถ ์คํ์ด ์๋ผ์ใ ใ
์๋ ํ์ธ์ https://www.inflearn.com/course/lecture?courseSlug=uikit-ios14&unitId=84359 ์ด ๋ถ๋ถ ๊ตฌํ๋์ด ์๋์ง ํ์ธ์ด ํ์ํด ๋ณด์ ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 210
Q&A
์ฝ์์ฐฝ print ๋ด์ฉ ์ ๋ธ
์๋ ํ์ธ์์ ์ฒด์ฝ๋๋ฅผ ๋ณด์ฌ์ฃผ์๋ฉด ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.์คํฌ๋ฆฐ์ท์ผ๋ก๋ print์ด ๊ณณ์ด ์๋ณด์ด๋ค์
- Likes
- 0
- Comments
- 1
- Viewcount
- 240
Q&A
TodoCell UIview ์์ฑ ํ ์ฐ๊ฒฐ ์ ์ค๋ฅ
์๋ ํ์ธ์ai๊ฐ ์๋์ผ๋ก ๊ธธ๊ฒ ๋ต๋ณ์ ๋ฌ์์คฌ๋๋ฐ ๊ฐ๋จํ ๋ต๋ณ ๋๋ฆฌ๋ฉดxcode๋ฒ๊ทธ๋ผ ๊ทธ๋ฅ ๊ป๋คํค๊ฑฐ๋ ์ฝ๋์์ ์ํฐ ๋ช ๋ฒ ์ณ๋ณด๊ฑฐ๋ ํ์ผ ์ง์ฐ๊ณ ๋ค์ ๋ง๋ค๊ฑฐ๋ ํ๋ฉด ๋ ๊ฒ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 442
Q&A
ํ ์ด๋ธ ๋ทฐ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ ๊ด๋ จ ์ง๋ฌธ
์๋ ํ์ธ์. ์ง๋ฌธํ์ ์๋๊ฐ '๋ฆฌ๋ก๋๋ ๋ฌด์กฐ๊ฑด ํ์ํ๋ฐ ๋ฐ์ธ๋ฉ์ด ์ ํ์ํ๊ฐ'์ ๋ํ ๊ฒ์ด๋ผ๋ฉด, ์์์์ ๋ณด์ฌ์ง๋ ๊ฒ์ฒ๋ผ, ํน์ ์ํฉ์์๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ๋ง์ผ๋ก๋ UI ์ปดํฌ๋ํธ์ธ ๋ ์ด๋ธ์ ๊ฐฑ์ ํ ์ ์์ต๋๋ค.edit์ํฉ์์ ๋ฆฌ๋ก๋ ์์ด ๋ ์ด๋ธ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋ณด์๋ฉด ์ดํด๊ฐ ๋์ค๊ฒ๋๋ค. ๊ทธ๋ฌ๋, ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ๊ธฐ์กด ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ ๊ฒฝ์ฐ์ ๊ฐ์ด ํ ์ด๋ธ ๋ทฐ์ ์ ๊ฐ์์ ๋ณํ๊ฐ ์๊ธธ ๋๋ reloadData()๋ฅผ ํธ์ถํ์ฌ UI๋ฅผ ๊ฐฑ์ ํด์ผ ํฉ๋๋ค. ์ด๋ UIKit์๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ด ์ง๊ด์ ์ผ๋ก ๋ด์ฅ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. UIKit์ ์ฃผ๋ก ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ฐํ๊ณ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ์ UI ๊ฐ์ ๋๊ธฐํ๋ฅผ ์ํด ์ถ๊ฐ์ ์ธ ๋ฆฌ๋ก๋ ๊ฐ์ ๋ก์ง์ด ํ์ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๊ฐ๋ ์ด ๋์คํ๋ ๊ฒ์ 2000๋ ๋ ์ ํ๋ก ๋น๊ต์ ์ต๊ทผ์ด๋ฏ๋ก ๋ฐ์ธ๋ฉ ๊ฐ๋ ์ด ์๋ ํ๋ ์์ํฌ๊ฐ ์์ง ๋ง์ต๋๋ค.UIKit๋ ๋ฐ์ธ๋ฉ ๊ฐ๋ ์ด ํํจ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ฐ์ธ๋ฉ์ ์ง์ ๊ตฌํํ ์ ์๊ธด ํ์ง๋ง(ํด๋ก์ ๋ฑ์ผ๋ก ํตํด)Combine, RxSwift์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๊ฒ ํจ์ฌ ๊ฐํธํ๋ฏ๋ก ์ด๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ผ์๋ ์ด๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๋ฐ์ดํฐ์ UI ์ฌ์ด์ ๊ฐ๋ ฅํ ๋ฐ์ธ๋ฉ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, UIKit์์๋ ์ฌ์ ํ ์ ์ ์ถ๊ฐ๋ ์ญ์ ์ ๊ฐ์ ์ผ๋ถ ์์ ์์๋ ์๋์ผ๋ก UI๋ฅผ ๊ฐฑ์ ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๋ฐ์ธ๋ฉ์ ์ฐ๋ ๋ชฉ์ ์๊ฐ๋ฐ์๊ฐ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ UI ์ ๋ฐ์ดํธ๋ฅผ ์๋์ผ๋ก ๊ด๋ฆฌํ๋ ๋ณต์กํจ์ ์ค์ด๊ณ , ์ฝ๋์ ๋ช ํ์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ๋์ ๋ ๊ฐ๋ ์ ๋๋ค. ๋ฐ์ธ๋ฉ์ด ์ ์ ํ ๊ตฌํ๋์ด ์๋ค๋ฉด, ๊ฐ๋ฐ์๋ ์ฃผ๋ก ๋ฐ์ดํฐ ๋ก์ง์ ์ง์คํ ์ ์์ผ๋ฉฐ, UI๋ ์๋์ผ๋ก ๊ฐฑ์ ๋๋ ๋ก์ง์ ๋จ์๋ช ํํด ์ง๊ฒ ๋ฉ๋๋ค. ์ฐธ๊ณ ๋ก ์ต์ ํ๋ ์์ํฌ์ธ SwiftUI๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ํต์ฌ ๊ฐ๋ ์ผ๋ก ์ผ๊ณ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ์ ๋ณํ๋ง์ผ๋ก UI๋ฅผ ์๋์ผ๋ก ๊ฐฑ์ ํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ ์ ์ ์ถ๊ฐ๋ ์ญ์ ์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ณ๋์ ๋ฆฌ๋ก๋ ๊ณผ์ ์์ด UI๊ฐ ๊ฐฑ์ ๋ฉ๋๋ค.
- Likes
- 0
- Comments
- 2
- Viewcount
- 370
Q&A
ํค๋ณด๋ ๋ ์๋ ์ํ ๋ง๋ค๊ธฐ
์๋ ํ์ธ์ ์๋ง ์๋ฎฌ๋ ์ดํฐ๋ผ ํค๋ณด๋๊ฐ ์์ฌ๋ผ์จ๋ฏ ํฉ๋๋คcommand + k ๋๋ฅด๋ฉด์ ํ์ธํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.(์ฌ์ง)
- Likes
- 0
- Comments
- 1
- Viewcount
- 333





![Thumbnail image of the Successful Real iOS Design Guide - [Autolayout With Code]](https://cdn.inflearn.com/public/courses/332142/cover/4c1ff99b-27a5-4c1c-b2c1-194b170e5144/332142-eng.png?w=148)
![Thumbnail image of the Becoming a Successful Real iOS Developer [From Basics to Practice]](https://cdn.inflearn.com/public/courses/329824/cover/da94c23b-67bc-4600-877c-9cb9c74758f1/329824-eng.jpg?w=148)
