목록iOS/Swift (7)
大器晩成

MVC, MVVM, InOut Pattern 등 iOS를 개발하면서 너무 많은 패턴들이 존재하지만, 추가적으로 Coordinator 패턴도 있습니다.coordinate의 사전적 의미중, "(몸의 움직임을) 조정하다" 라는 뜻이 있습니다. 이처럼 코니데이터를 조정하는 사람 즉, 조정자를 의미합니다. 이 패턴은 Soroush Khanlou라는 개발자가 2015년에 NSSpain 컨퍼런스에서 처음 소개했습니다. 그는 기존의 iOS 개발에서 UIViewController가 너무 많은 책임을 가지고 있다는 문제를 해결하고자 했습니다. (우리가 MVC -> MVVM으로 변하게 된 이유도 ViewController가 너무 많은 책임을 가지고 있기 때문이죠.) 특히 내비게이션 로직이 뷰 컨트롤러 내부에 깊숙이 들어..
DI (Dependency Injecting)- DI를 직역하자면 의존성 주입이고, 하나의 객체가 다른 객체의 의존성을 제공하는 기술입니다. 주입은 의존성을 사용하려는 객체로 전달하는 것입니다. 우선 의존성이 뭔지 고민을 해보면 다음과 같은 예제를 들어볼 수 있습니다.class Monster { var name: String init(name: String) { self.name = name } func printMonster() { print("이 몬스터는 \(self.name)입니다." ) } }class Maple { let pig = Monster(name: "리본 돼지") }let maple = Maple()maple..
QoS(Quality Of Service)의 약자로 DispatchQueue.global().async일 때 사용됩니다.Concurrent 방식의 비동기로 작업할 때에는 우선순위를 알 수 없기 때문에, 우선순위를 관리하기 위해서 QOS를 사용합니다.왜 다른 곳에서 사용할 수 없냐고 의문을 가지신다면 간다합니다.- 시리얼 동기 방식은 직렬 방식이기 때문에 순서를 알 수 있습니다.- 시리얼 비동기 방식은 메인 스레드가 먼저 작업이 수행되고 나서 다른 스레드가 실행되기 때문에 순서를 알 수 있습니다- 동시 동기 방식은 다른 큐에 동작들이 먼저 실행되고, 메인 스레드가 실행되기 때문에, 순서를 알 수 있습니다.- 하지만 동시 비동기 방식은 순서를 알 수 없습니다. QoS는 6가지로 구분됩니다.userIntera..
이전 포스팅에서는 Serial 상태에서 Sync와 Async를 알아봤습니다.이번 포스팅에서는 Concurrent Sync/Async를 정리해 보도록 하겠습니다. Concurrent Syncfunc ConcurrentSync() { print("START") print("첫번째 작업 시작") DispatchQueue.global().sync { for i in 1...10 { print(i, terminator: " ") } } DispatchQueue.global().sync { for i in 21...30 { print(i, terminator: " ") } } ..