์ ์ฒด ๊ธ
-
LLDB - ๊ฐ๋ ๋ฐ ์๊ฐLLDB 2021. 4. 16. 17:09
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ค๋๋ถํฐ LLDB๋ฅผ ๋ถ์ ๋ณด๊ฒ ์ต๋๋ค!! ์ด๋ฒ ํฌ์คํ ์ LLDB๋ ๊ฐ๋ตํ ๋ฌด์์ธ์ง ์ ์ฌ์ฉํ๋๊ฒ์ธ์ง? ๊ฐ๋ ๋ฐ ์๊ฐ๋ฅผ ํ๊ฒ ์ต๋๋ค๐ง๐ป๐ป LLDB? - Low-Level Debugger๋ผ๋ ๋ป์ผ๋ก LLVM์ ๋๋ฒ๊ฑฐ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๋ฐํ๋ ์ ํ์ ์๋ธ ํ๋ก์ ํธ - ๋ก์ฐ๋ ๋ฒจ ์ปจํธ๋กค ๊ฐ๋ฅํ ๋ชจ๋๋ก ์ด๋ค์ ธ์์ผ๋ฉฐ ๊ธฐ๊ณ์ด์ ๊ฐ๊น์ด ์์ญ๊น์ง ๋๋ฒ๊น ๊ฐ๋ฅ (C/C++/Object-C/Swift ์ง์) - Xcode์ ๊ธฐ๋ณธ ๋๋ฒ๊ฑฐ๋ก ๋ด์ฅ - ์ฐจ์ธ๋ ๊ณ ์ฑ๋ฅ ๋๋ฒ๊ฑฐ!? - Clang์ ํ์ ๋ฐ LLVM ๋์ค์ด์ ๋ธ๋ฌ์ ๊ฐ์ LLVM ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ ์งํฉ์ผ๋ก ๋น๋๋จ - ์ค์ ํ๋ก๊ทธ๋จ์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํด๊ฐ ์ฌ์์ง - LLVM์ ํ๋ก ํธ์๋์ ๋์ํ๋ ๋๋ฒ๊ฑฐ๋ก ๊ฐ๊ฒฐํ๊ณ ..
-
RxSwiftRxSwift 2021. 4. 15. 16:07
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ RxSwift์ ๋ํด ๊ธฐ์ด์ ์ธ ๋ถ๋ถ์ ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์ฐ์ ์ด์ ํฌ์คํ ์ธ SwiftUI์ ์ด์ด RxSwift๋ฅผ ํ์ตํ๊ธฐ์ ์ ์ด๋ฐ๊ฒ์ ๋ํด ๋ฐฐ์์ผํ๋์ง ๋ญ๊ฐ ์ค์ํ์ง ๊ฐ๋ตํ ์์๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ ์ฐ์ MVVM์ ๋ํด ์ ํ์๊ฐ ์์ต๋๋ค. MVC / MVP / MVVM 1. MVC - ์ปจํธ๋กค๋ฌ์์ ์ฌ์ฉ์์ ์ด๋ฒคํธ๋ฅผ ๋ฐ๊ณ ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ ๋ฐ ๋ณํํ์ฌ ๋ทฐ์ ์ ๋ฐ์ดํธ ํด์ฃผ๋ ์ํคํ ์ณ ํจํด - ๊ฐ๊ฐ์ ๋ถ๋ฆฌํ์ฌ ์์กด์ฑ์ ์์ ๋ คํ๋๋ฐ ๋ทฐ์ ์ปจํธ๋กค๋ฌ์์๋ ์ํต์ ํ๊ธฐ์ ์์กด์ฑ์ด ์๊ธธ ์ ์์ด ์ฌ์ฌ์ฉ์ฑ์ด ๋ฎ์์ง 2. MVP - MVC์ ๋์ผํ ๊ฐ๋ ์ผ๋ก C๋์ P๊ฐ ๋ค์ด๊ฐ๊ฒ์ผ๋ก ํ๋ ์ ํฐ๋ก ๋ณ๊ฒฝ - ๋ทฐ์ ํ๋ ์ ํฐ์ ์์กด์ฑ ๋ฌธ์ ๊ฐ ๊ฒฐ๊ตญ ๋ํ๋จ 3. MVVM -..
-
SwiftUISwiftUI 2021. 4. 14. 22:55
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ค๋์ ํฌ์คํ ์ SwiftUI์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป SwiftUI? - ์ค์ํํธ ์ธ์ด๋ก ๋ชจ๋ ํ๋ซํผ์์ ์ฑ์ ๋ํ UI์ ๋์์ ์ ์ธํด์ฃผ๋ ํ๋ ์์ํฌ - ์ ๊ทผ์ฑ ๋ฐ ์ง์ญํ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ์๋์ผ๋ก ์ง์ํด์ค (๋คํฌ๋ชจ๋, ์ ๋์ ๊ธ์ ํฌ๊ธฐ ์กฐ์ ๋ฑ) - UIKit, AppKit, WatchKit ํ๋ ์์ํฌ ๊ฐ์ฒด์ ํตํฉํด ํ๋ซํผ ๋ณ ๋ ๋ง์ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ - ์บ๋ฒ์ค์ ์ฝ๋๊ฐ ๋๊ธฐํ๋์ด MVVM ์ํคํ ์ณ ํจํด์ ์ ํฉ - Xcode12, iOS13 ์ด์๋ถํฐ ์ง์ ๊ฐ๋ฅ - ๋ทฐ ํ๋กํ ์ฝ์ ์ฑํํ๊ณ ๋ฐ๋๋ฅผ ๊ตฌํํด์ฃผ์ด ๋ทฐ๋ฅผ ์ฌ์ฉํ๊ฒํจ - ๊ณต๊ฐ์ ๊ฐ๋ ์ผ๋ก ๋ทฐ๋ฅผ ๋ง๋ค๋ฉด ์ค์๋ถํฐ ์ฐจ์งํ๊ฒ๋จ (์๋์ ์ด ์๋) SwiftUI ์ฅ์ ? - ํ๋ฒ์ ๊ฐ๋ฐ๋ก ๋ชจ๋ ํ๋ซํผ์์ ๋์์ด ๊ฐ๋ฅํ ์ฑ ..
-
Early ExitSwift 2021. 4. 13. 10:55
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ ๋ฒ ํฌ์คํ ์ธ ์ต์ ๋ ์ฒด์ด๋์ ์ด์ด ๊ด๋ จ๋ Early Exit, ๋น ๋ฅธ์ข ๋ฃ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์ต์ ๋ ์ฒด์ด๋๊ณผ ์ต์ ๋ ๋ฐ์ธ๋ฉ์ ์ดํด๊ฐ ๋ ์ํ์์ ๋น ๋ฅธ ์ข ๋ฃ์ ํค์๋์ธ guard์ ๋ํด ์์๋ณด๊ณ if์๋ ์ด๋ค ์ต์ ๋ ๋ฐ์ธ๋ฉ์์ ์ฐจ์ด๊ฐ ์์์ง์ ๋ํด ๋ฐฐ์๋ณด๊ฒ ์ต๋๋ค๐ Early Exit : ๋น ๋ฅธ์ข ๋ฃ๋ก if๋ฌธ์์๋ else ๊ตฌ๋ฌธ์ด ์์ด๋ ๋๋ฉฐ ๋ง์ฝ else ๊ตฌ๋ฌธ์ด ์์๋๋ if์ else ๊ตฌ๋ฌธ ๋ชจ๋ ๊ตฌํ์ ํด์ฃผ๋ฉฐ ๋ถ๊ธฐ๋ฅผ ํด์ค๋๋ค. ๊ทธ๋ฌ๋ guard ๊ตฌ๋ฌธ์ ๊ผญ else ๊ตฌ๋ฌธ์ด ์์ด์ผ ๋ฉ๋๋ค. else ๊ตฌ๋ฌธ์์๋ ๋ฌด์กฐ๊ฑด ์์์ ์ฝ๋๋ธ๋ญ์ ์ข ๋ฃ์ํค๋ ์ ์ด๋ฌธ ์ ํ ๋ช ๋ น ํน์ ๊ทธ ๊ตฌ๋ฌธ์ ํ์ถ์ํฌ ์ ์๋ ๋น๋ฐํ ํจ์ / ๋ฉ์๋ ํธ์ถ์ด ์์ด์ผ ํฉ๋๋ค. ์ ์ด๋ฌธ ์ ํ ๋ช ๋ น์ด : return..
-
Optional ChainingSwift 2021. 4. 12. 19:33
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ Optional Chaining ์ต์ ๋ ์ฒด์ด๋์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค. ์ต์ ๋ ์ฒด์ด๋ (Optional Chaining) : ์ต์ ๋ ์ฒด์ด๋์ด๋ ์ต์ ๋์ ์ฌ๋ฌ๋ฒ ์ฒด์ธ ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ธฐ์ -> ์ต์ ๋ ์ฒด์ด๋์ ๋ ๋ถ๋ถ์์ ๊ฐ์ด ํ๋๋ผ๋ nil์ด๋ฉด nil์ ๋ฐํ ์ต์ ๋ ์ฒด์ด๋์ ์ฌ์ฉ import Foundation class Camper { var nickName: String var description: Description? init(nickName: String) { self.nickName = nickName } } struct Description { var gender: Gender? var age: Int } class Gender { var gende..
-
GCD & OperationSwift 2021. 4. 9. 15:02
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ์ผ์ ์ ๋ค๋ฃฌ๋ฐ ์๋ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์์ GCD & Operation์ ํ์ตํด๋ณด๊ฒ ์ต๋๋ค. ์ด์ ๋ณด๋ค ์ ์ฒด์ ์ธ ๊ฐ๋ ์ ๋ํ ํ์ต์ ๊ฐ์ง๋ง ์กฐ๊ธ ๋ ์ฌํ๋ ๋ด์ฉ์ด๋ผ๊ณ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋คโบ๏ธ ์ฐ์ ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์์ ์ค์ํ ๋น๋๊ธฐ์ ๋ํด ์กฐ๊ธ ์ง๊ณ ๋์ด๊ฐ๋ณด๊ฒ ์ต๋๋ค. ๋์์ฑ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ด ๊ฐ ์ค๋ ๋๋ณ๋ก ๋น๋๊ธฐ์ ์ผ๋ก ์ผ์ ์ฒ๋ฆฌํ๊ฒ ํด์ฃผ๋ ๋ถ๋ถ์ ๋๋ค. ๊ทธ๋์ ๊ฐ ์ผ์ ๊ธฐ๋ค๋ ธ๋ค ํ์ง ์๊ณ ๋์์ ์ฒ๋ฆฌํ๋๋ก ๋ง๋ค์ด์ค๋๋ค. ์ ์์ ์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํด์ผ๋ ๊น? : ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ ๊ฒฝ์ฐ๋ ๊ต์ฅํ ๋ง์ต๋๋ค. ์๋ฅผ๋ค์ด ๋คํธ์ํฌ ์์ ๋ค์ ๋ํดํธ๊ฐ ๋น๋๊ธฐ์ ๋๋ค. ํํ ๋ณด๋ ํ ์ด๋ธ ๋ฐ ์ปฌ๋ ์ ๋ทฐ์์ ์ด๋ฏธ์ง๋ฅผ ์๋ฒ์์ ๋ฐ์ ๋ฟ๋ ค์ฃผ๋ ์ธ์คํ๊ทธ๋จ๋ค์ ๊ฒฝ์ฐ๋ ๋ง์ฝ ๋น๋๊ธฐ..
-
iTerm2 ์ค์น ๋ฐ ์ฌ์ฉMacOS 2021. 4. 5. 14:18
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ iTerm2๋ฅผ ์ค์น ๋ฐ ์ปค์คํฐ๋ง์ด์งํ์ฌ ์ฌ์ฉ ์ ์ฉํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์์ ๋ถํฐ MacOS์์ ๊ธฐ๋ณธ ํฐ๋ฏธ๋์ ์ฌ์ฉํ๊ณ ์์๋๋ฐ ๋ค๋ฅธ ๋ถ๋ค์ค์ iTerms2๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ธ ๋ ํธ๋ฆฌํ๊ณ ์ฌ์ค ์์ ํฐ๋ฏธ๋?๋ก ์ฌ์ฉํ๋๊ฑธ ๋ณด๊ณ ์ธ์ ๊ฐ ํด๋ด์ผ์ง ํ๊ณ ์๋ ๋ถ๋ถ์ด์์ต๋๋ค..! ์ด๋ฒ ๊ธฐํ์ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค์น๋ถํฐ ์ ์ฉ๊น์ง ํด๋ดค์ต๋๋คโบ๏ธ iTerm2? : iTerm2์ด ์ฐ์ ๋ฌด์์ธ์ง ๊ฐ๋ ์ ์ผ๋ก ์์์ผ๊ฒ ์ฃ ? ๊ณต์ ์ฌ์ดํธ์์๋ ์๋์ ๊ฐ์ด ๊ธฐ์ ๋์ด ์์ต๋๋ค. "iTerm2๋ ๋ฌด์์ ๋๊น? iTerm2๋ Terminal์ ๋์ฒดํ๋ฉฐ iTerm์ ํ์ ์ ํ์ ๋๋ค. macOS 10.14 ์ด์์ด ์ค์น๋ Mac์์ ์๋ํฉ๋๋ค. iTerm2๋ ๋น์ ์ด ํญ์ ์ํ๋ ๊ฒ์ ์ ํ ๋ชฐ๋๋ ๊ธฐ๋ฅ๋ค๋ก ํฐ๋ฏธ๋์ ํ..
-
Core AnimationiOS 2021. 4. 1. 18:44
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ์ ๋ฒ Core Graphics์ ์ด์ด Core Animation์ ๋ํด ํ์ตํ๊ฒ ์ต๋๋ค๐ง๐ป๐ป Core Animation? : ์๊ฐ์ ์์์ ๋ํด ๊ทธ๋ํฝ ๋๋๋ง ๋ฐ ๊ตฌ์ฑ์ ํตํด ์ ๋๋ฉ์ด์ ์ ๋ง๋๋ ํ๋ ์์ํฌ : ์์ ๋ฐ ๋ ํฌ์ธํธ์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑํ๊ณ ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ๋ฉด Task๊ฐ ์๋์ผ๋ก ์ผ์ ์ํํจ! : ๋๋ก์ ์์ ์ ๊ทธ๋ํฝ ํ๋์จ์ด๋ก ์ ๋ฌํ์ฌ ๋ ์ด์ด ๊ฐ์ฒด๊ฐ ์กฐ์ํ ์ ์๋๋ก ๋ ๋๋ง ์์ ์ ๊ฐ์ํํด ์ฑ ์๋ ๋ฐ ํ์ง์ ๋ค์ด์์ด ๋์ ํ๋ ์๊ณผ ์์ฐ์ค๋ฌ์ด ์ ๋๋ฉ์ด์ ์ ๋ณด์ฌ์ค๋๋ค๐ -> UIKit์ AppKit์ ๋ฐ์ ํ ๊ด๊ณ!! : ๋๋ก์ ์์คํ ์์ฒด๊ฐ ์๋ ์ฑ์ ์ฝํ ์ธ ๋ฅผ Layer๋ฅผ ๊ฐ์ง๊ณ ๊ด๋ฆฌํ๋ค๋ ์ ์์ ์ฝ์ด ๊ทธ๋ํฝ์ค์์ ์ฐจ์ด๐ : ์ฝ์ด ์ ๋๋ฉ์ด์ ์ ๋ทฐ๊ฐ ์..