SWIFT
-
UIKitPlus - ConstraintsLibrary 2021. 6. 19. 19:37
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ์ด์ ์ ๊ฐ๋ตํ ํฌ์คํ ํด๋ณธ UIKitPlus์์ ์ ์ฝ์ ์ฃผ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ๋จ๋ ์ ์ฝ 1. aspectRatio (๋น์จ) UView().aspectRatio() /// 1:1 low priority UView().aspectRatio(priority: .defaultLow) /// 2:1 UView().aspectRatio(2 / 1) /// 4:3 low priority UView().aspectRatio(priority: .defaultLow) 2. width / height (๋์ด / ๋์ด) /// 100pt UView().width(100) /// Stateable width @UState var width: CGFloat = 100 Vi..
-
DFS/BFS๋ฅผ ์ด์ฉํ ์๊ณ ๋ฆฌ์ฆAlgorithm 2021. 6. 17. 11:48
์๋ ๋ฌธ์ ๋ ํ๋ก๊ทธ๋๋จธ์ค์์ ์ ๊ณตํ๋ ์ฌํ๊ฒฝ๋ก์ ๋ฌธ์ ์ ๋๋ค๐ง๐ป๐ป ๋ฌธ์ ์ ์ ์ฃผ์ด์ง ํญ๊ณต๊ถ์ ๋ชจ๋ ์ด์ฉํ์ฌ ์ฌํ๊ฒฝ๋ก๋ฅผ ์ง๋ ค๊ณ ํฉ๋๋ค. ํญ์ "ICN" ๊ณตํญ์์ ์ถ๋ฐํฉ๋๋ค. ํญ๊ณต๊ถ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด tickets๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ฐฉ๋ฌธํ๋ ๊ณตํญ ๊ฒฝ๋ก๋ฅผ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ์ ํ์ฌํญ ๋ชจ๋ ๊ณตํญ์ ์ํ๋ฒณ ๋๋ฌธ์ 3๊ธ์๋ก ์ด๋ฃจ์ด์ง๋๋ค. ์ฃผ์ด์ง ๊ณตํญ ์๋ 3๊ฐ ์ด์ 10,000๊ฐ ์ดํ์ ๋๋ค. tickets์ ๊ฐ ํ [a, b]๋ a ๊ณตํญ์์ b ๊ณตํญ์ผ๋ก ๊ฐ๋ ํญ๊ณต๊ถ์ด ์๋ค๋ ์๋ฏธ์ ๋๋ค. ์ฃผ์ด์ง ํญ๊ณต๊ถ์ ๋ชจ๋ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ง์ผ ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ 2๊ฐ ์ด์์ผ ๊ฒฝ์ฐ ์ํ๋ฒณ ์์๊ฐ ์์๋ ๊ฒฝ๋ก๋ฅผ return ํฉ๋๋ค. ๋ชจ๋ ๋์๋ฅผ ๋ฐฉ๋ฌธํ ์ ์๋ ๊ฒฝ์ฐ๋ ์ฃผ์ด..
-
ReactorKitLibrary 2021. 6. 16. 10:55
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ReactorKit์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ReactorKit? - ๋ฐ์ํ ๋จ๋ฐฉํฅ Swift ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์จ๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ - Flux์ Reactive Programming์ ์กฐํฉ์ผ๋ก ์ด๋ฃจ์ด์ง - User Action๊ณผ View๋ ์คํธ๋ฆผ์ ํตํด ๊ฐ ๊ณ์ธต์ ์ ๋ฌ (์คํธ๋ฆผ์ ๋จ๋ฐฉํฅ) - View๋ Action๋ง ๋ด๋ณด๋ด๊ณ Reactor๋ State๋ง ๋ด๋ณด๋ผ ์ ์์ ReactorKit ์ฌ์ฉ์ ์ํ ์๊ตฌ์ฌํญ? - Swift 5 ์ด์ - iOS 8 ์ด์ - Cocoapods๋ก๋ง ์ง์ ๊ฐ๋ฅ (https://github.com/ReactorKit/ReactorKit) ReactorKit์ ํน์ง? - ๊ธฐ์กด MVVM ์ํคํ ์ณ ํจํด์๋ ํน์ ์ ํํ๋ ํ ํ๋ฆฟ์ด ์..
-
์ด๋ถํ์์ ์ด์ฉํ ์๊ณ ๋ฆฌ์ฆAlgorithm 2021. 6. 15. 10:44
์๋ ๋ฌธ์ ๋ ํ๋ก๊ทธ๋๋จธ์ค์์ ์ ๊ณตํ๋ ์ ๊ตญ์ฌ์ฌ์ ๋ฌธ์ ์ ๋๋ค๐ง๐ป๐ป ๋ฌธ์ ์ ์ n๋ช ์ด ์ ๊ตญ์ฌ์ฌ๋ฅผ ์ํด ์ค์ ์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๊ฐ ์ ๊ตญ์ฌ์ฌ๋์ ์๋ ์ฌ์ฌ๊ด๋ง๋ค ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ค๋ฆ ๋๋ค. ์ฒ์์ ๋ชจ๋ ์ฌ์ฌ๋๋ ๋น์ด์์ต๋๋ค. ํ ์ฌ์ฌ๋์์๋ ๋์์ ํ ๋ช ๋ง ์ฌ์ฌ๋ฅผ ํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์์ ์ ์๋ ์ฌ๋์ ๋น์ด ์๋ ์ฌ์ฌ๋๋ก ๊ฐ์ ์ฌ์ฌ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ ๋นจ๋ฆฌ ๋๋๋ ์ฌ์ฌ๋๊ฐ ์์ผ๋ฉด ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๊ทธ๊ณณ์ผ๋ก ๊ฐ์ ์ฌ์ฌ๋ฅผ ๋ฐ์ ์๋ ์์ต๋๋ค. ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ต์๋ก ํ๊ณ ์ถ์ต๋๋ค. ์ ๊ตญ์ฌ์ฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ฌ๋ ์ n, ๊ฐ ์ฌ์ฌ๊ด์ด ํ ๋ช ์ ์ฌ์ฌํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๋ด๊ธด ๋ฐฐ์ด times๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฌ๋ฅผ ๋ฐ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ต์๊ฐ์ retu..
-
UIKitPlusLibrary 2021. 6. 14. 20:50
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ UIKitPlus์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป UIKitPlus? - ์ฐ์ UIKitPlus๋ ์จ๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฝ์ฝ์ํ / SPM์ ํตํด ์ค์นํ ์ ์์ (์ฃผ์๋ ์๊ธฐ! -> https://github.com/MihaelIsaev/UIKitPlus) - SwiftUI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ํ UI๋ฅผ ๋ง๋ค์ด์ฃผ์๋๋ฐ UIKit์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด์ ๋ ๊ฐ๋จํ๊ฒ ๋ฐ์ํ UI๋ฅผ ๊ตฌํํ ์ ์์ (UIKit์ ์ฐ์ฅ ๋๋) - Xcode 12.3 / Swift 5.3 ์ด์ ๋ฒ์ ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅ - ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ฐ์ ๊ฒฝ์ฐ iOS 9 ์ด์ ํ๊ฒฝ์์ ์ง์ - SwiftUI์ ๋น์ทํ ๋ทฐ ๊ตฌ์กฐ๋ก ์์ฑ๋์ง๋ง UIKit์ ๋ ์ด์์์ ์ฌ์ฉ - UIKitPlus๋ฅผ ์ํฌํธํ๋๊ฒ์ผ๋ก UIKit ๋์ ..
-
์ฌ๊ท๋ฅผ ์ด์ฉํ ์๊ณ ๋ฆฌ์ฆAlgorithm 2021. 6. 14. 10:58
์๋ ๋ฌธ์ ๋ ํ๋ก๊ทธ๋๋จธ์ค์์ ์ ๊ณตํ๋ ํ๋ ธ์ด์ ํ์ ๋ฌธ์ ์ ๋๋ค๐ง๐ป๐ป ๋ฌธ์ ์ ์ ํ๋ ธ์ด ํ(Tower of Hanoi)์ ํผ์ฆ์ ์ผ์ข ์ ๋๋ค. ์ธ ๊ฐ์ ๊ธฐ๋ฅ๊ณผ ์ด ๊ธฐ๋์ ๊ฝ์ ์ ์๋ ํฌ๊ธฐ๊ฐ ๋ค์ํ ์ํ๋ค์ด ์๊ณ , ํผ์ฆ์ ์์ํ๊ธฐ ์ ์๋ ํ ๊ธฐ๋ฅ์ ์ํ๋ค์ด ์์ ๊ฒ์ด ์์ ์๋๋ก ์์๋๋ก ์์ฌ ์์ต๋๋ค. ๊ฒ์์ ๋ชฉ์ ์ ๋ค์ ๋ ๊ฐ์ง ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋ฉด์, ํ ๊ธฐ๋ฅ์ ๊ฝํ ์ํ๋ค์ ๊ทธ ์์ ๊ทธ๋๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ์ผ๋ก ์ฎ๊ฒจ์ ๋ค์ ์๋ ๊ฒ์ ๋๋ค. ํ ๋ฒ์ ํ๋์ ์ํ๋ง ์ฎ๊ธธ ์ ์์ต๋๋ค. ํฐ ์ํ์ด ์์ ์ํ ์์ ์์ด์๋ ์๋ฉ๋๋ค. ํ๋ ธ์ด ํ์ ์ธ ๊ฐ์ ๊ธฐ๋ฅ์ ์ผ์ชฝ ๋ถํฐ 1๋ฒ, 2๋ฒ, 3๋ฒ์ด๋ผ๊ณ ํ๊ฒ ์ต๋๋ค. 1๋ฒ์๋ n๊ฐ์ ์ํ์ด ์๊ณ ์ด n๊ฐ์ ์ํ์ 3๋ฒ ์ํ์ผ๋ก ์ต์ ํ์๋ก ์ฎ๊ธฐ๋ ค๊ณ ํฉ๋๋ค. 1๋ฒ ๊ธฐ๋ฅ์ ์๋..
-
Composable ArchitectureTCA 2021. 6. 11. 13:41
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ Composable Architecture์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์ ์์๋ณด๊ฒ ๋์๋์ง? ์์ผ๋ก๋ SwiftUI์ ์ฌ์ฉ์ ์ด๋ฒคํธ๋ฅผ ํตํ ๋ทฐ์ ์ ๋ฐ์ดํธ ๋ฑ ์ํ ๊ฐ์ ์ฒ๋ฆฌํ๋ ๋ฐ์ํ์ Combine์ด ๋ง์ด ์ฌ์ฉ๋๊ฒ ๋ ๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค. ์ด์ ์กฐ๊ธ ๋ SwiftUI ํ๋ ์์ํฌ์ ์ ํฉํ๊ณ ์ํ๋ฅผ ๊ด๋ฆฌํจ์ ๋ฐ๋ผ ๋ทฐ์ ๋ณํ๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ํ ์ ์๋ ์ํคํ ์ณ์ด๊ธฐ์ ์ค์ํฉ๋๋ค๐๐ป Composable Architecture? ์ปดํฌ์ ๋ธ ์ํคํ ์ณ? ์ฌ์ ์ ์ผ๋ก ์ปดํฌ์ ๋ธ์ ๊ตฌ์กฐ๋ ๊ตฌ์ฑ์ด๋ผ๋ ๋ป์ ๊ฐ์ง๋๋ค. ์ด๋ฅผ ํ ๋๋ก ํด๋น ์ํคํ ์ณ ํจํด์ ํด์ํ์๋ฉด ํฐ ๊ธฐ๋ฅ๋ค์ ๋ถ๋ฆฌํด ๊ตฌ์กฐ์ ์ธ ๋ชจ๋๋ก ๋๋๊ณ ์ด๋ฅผ ์ด์ฉํ๋๊ฒ์ด๋ผ ํ๋จ๋ฉ๋๋ค. ์๋์ ๊ฐ์ด ์ปดํฌ์ ๋ธ ์ํคํ ์ณ๋ฅผ ์ ์ํด๋ณผ ์ ์์ต๋..
-
CombineCombine 2021. 6. 9. 16:27
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ Combine์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป Combine์ ์๊ธฐ์ ! MVVM ํจํด์ ๋ฐ๋ฅด๊ธฐ ์ํด ์คํ ๋ฆฌ๋ณด๋ ์์ ๋์ SwiftUI๋ฅผ ์ฌ์ฉํ๋ฉด์ RxSwift๋ก ๊ตฌํ์ ํด์ฃผ์๋๋ฐ์. WWDC 2019 ์ดํ Combine์ด ๋ํ๋ฌ์ต๋๋ค. Combine์ด ๋ฌด์์ด๋? ์ฝ๊ฒ ์๊ฐํ๋ฉด RxSwift๋ ์จ๋ํํฐ ํ๋ ์์ํฌ์ด๊ณ Combine์ ์ ํ์์ RxSwift์ ์ญํ ์ ์ํด ๋ง๋ ํผ์คํธํํฐ ํ๋ ์์ํฌ์ ๋๋ค. Combine์ ์ ์ฐ๋? RxSwift๋ฅผ ์ฐ๋ ์ด์ ์ ์์ถฉํ๋ค๊ณ ๋ณด๋๋ฐ์. ๋น๋๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํจ์ ๋๋ค. ๊ธฐ์กด์ ๋น๋๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ํด delegate, GCD, notification center, ์ฝ๋ฐฑ ํด๋ก์ ๋ฑ์ ์ฌ์ฉํ์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ๋ฌธ..