[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🍎 Apple 97

[RxSwift] Driver, Signal

이번엔 RxCocoa의 Driver와 Signal에 대해 알아보아요. RxCocoa Trait? Driver와 Singal 모두 UI 요소를 위한 기능이지만 Single, Completable, Maybe와 마찬가지로 Observable을 wrapping하여 구성되기 때문에 RxCocoa의 Trait이라고 볼 수 있습니다. 참고 : Trait 포스팅 Driver Driver는 UILayer에서 반응형 작업을 좀 더 직관적으로 사용할 수 있도록 제공되는 개념입니다. Observable은 상황에 따라 BackgroundScheduler를 명확히 지정해주어야하지만, Driver는 MainScheduler로 지정되어 있습니다. UI 관련적용에는 따로 Scheduler를 지정해줄 필요없이 Driver를 사용하여 ..

[RxSwift] ControlProperty, ControlEvent

이번엔 RxCocoa의 ControlProperty와 ControlEvent에 대해 알아보아요. ControlProperty ControlProperty는 Subject처럼 프로퍼티에 값을 주입할 수 있고 동시에 값의 변화도 관찰할 수 있는 타입입니다. 이는 (UIElement).rx를 통해 접근할 수 있습니다. ControlProperty를 사용하면 해당하는 프로퍼티의 변경사항을 데이터 시퀀스로 받아올 수 있습니다. 아래 UITextField+Rx.Swift의 구현 예시를 봅시다. extension Reactive where Base: UITextField { ... public var text: ControlProperty { return value } ... } 내부에 존재하는 text가 Contr..

[RxSwift] Trait (Single, Completable, Maybe)

이번엔 RxSwift의 Trait들에 대해 알아보았습니다. Trait Trait은 Observable을 좀 더 안정성있고 의미있게 표현하기 위한 일종의 Syntax Sugar입니다. 그 종류로는 Single, Completable, Maybe가 있습니다. Observable을 좀 더 좁은 범위로 제한하여 제공함으로써 코드를 더 명시적으로 표현하는 것이죠. 일반적으로 Trait은 아래와 같이 단순히 read-only Observable의 wrapper 형태로 구성되어 있습니다. 이렇게 Observable에 대한 접근을 제한해놓고 내부에 존재하는 Observable를 조정하여 일부 기능에 특화된 형태로 사용자에게 제공합니다. struct Single { let source: Observable ... } S..

[RxSwift] Scheduler

RxSwift의 Relay나 Trait들을 공부하다보니, Scheduler에 관련된 언급이 많더라구요...? 그래서 이번엔 Scheduler에 대해 공부해봤습니다! Scheduler란 Scheduler는 프로세스가 작동하는 context를 추상화한 것입니다. 즉, Cocoa의 GCD와 비슷한 개념이라고 생각하시면 됩니다. 아래는 Scheduler 중 하나인 MainScheduler의 구현 코드입니다. public final class MainScheduler : SerialDispatchQueueScheduler { private let mainQueue: DispatchQueue let numberEnqueued = AtomicInt(0) /// Initializes new instance of `Ma..

[RxSwift] Subject

저번 게시글( [RxSwift] Observable & Operator )에 이어 오늘은 Subject에 대해서 공부해봤어요. Subject Subject는 Observable이자 Observer인 존재입니다. 값을 수동으로 추가할 수 있고, 해당 값을 이를 구독중인 Subscriber에게 발행할 수 있습니다. 아래 예시를 봅시다. example(of: "PublishSubject") { // 1 let subject = PublishSubject() // 2 subject.onNext("Is anyone listening?") // 3 let subscriptionOne = subject .subscribe(onNext: { (string) in print(string) }) // 4 subject.o..

[RxSwift] Observable & Operator

앞선 포스팅( [RxSwift] Reactive Programming & RxSwift )에서는 RxSwift가 무엇인지 그 본질에 대해 알아보았습니다. 제가 저번 포스팅을 하면서 느낀 것은 결국 RxSwift는 Rx를 Swift로 구현한 것일뿐, 절대 Rx와 별개의 것이 아니라는 것입니다. 그래서 오늘부터 그냥 Rx의 공식문서를 읽어보며 Rx 그 본질을 학습하는 시간들을 가져볼까합니다. (그래서 사실은 RxSwift보다는 Rx 학습에 가까울 수는 있습니다... 그래도 RxSwift의 예제도 함께 확인하면서 공부할거예요!) 오늘은 Observable과 Operator과 Operator에 대해 읽고 정리했습니다. Observable Observable은 특정 형태의 데이터의 snapshot을 전달하는 일련..

[UIKit] ViewController Life Cycle

안녕하세요 이누입니다! 여러분은 ViewController의 Life Cycle에 대해 잘 알고 계신가요? 저는 잘 알다가도 헷갈리거나 모르는 부분이 등장해서 당황스러울 때가 많더라구요. 그래서 오늘은 이를 포함해 전체적인 ViewController의 Life Cycle에 대해 정리해보았습니다. (2022.03.16 내용수정) 가장 먼저 init에 대해 정리하려고 살펴보니 nib, xib 파일에 대한 언급이 있더라구요. 그래서 이 부분부터 정리하고 넘어갑니다. cf. nib란? nib : NeXT Interface Builder (binary 기반), 인터페이스 빌더에서 생성한 객체들을 저장하는 파일입니다. UI를 구성하는 객체들과 이들의 세부설정, 각 객체들간의 관계 등을 포함합니다. xib : XML..

🍎 Apple/UIKit 2022.02.12

[iOS] #selector는 무엇이며 왜 필요할까?

우리는 iOS 개발에서 특정 Control에 target-action을 적용할 때 자연스럽게 Selector라는 타입의 객체(#selector(@objc method))를 사용합니다. 그런데 이것이 정확히 무엇일까요...? 오늘은 이 Selector가 무엇인지, 왜 필요한지 알아보고 정리했습니다! Objective-C에서의 Selector 사실 Selector는 원래 Objective-C에서 사용하던 기능입니다. 이는 특정 메서드를 컴파일타임에 동적으로 식별하고 참조하는 역할을 했습니다. 이러한 특징을 기반으로 Objective-C에서 동적으로 메서드를 동작시키려할 때 Selector를 사용했습니다. 반면 Swift에서는 이런 별도의 객체를 사용하지 않아도 메서드를 동적으로 동작시킬 수 있기 때문에 직접..

🍎 Apple/Question 2022.02.07

[UIKit] Multiple Gesture Recognizer 처리하기

안녕하세요 이누입니다. 🐶 하나의 View에 대해 여러 Gesture Recognizer가 등록되어 있는 경우 원하는 대로 처리되지 않는 경우가 종종 있습니다. 특정 Gesture로 인해 먼저 처리해야 될 다른 Gesture가 무시되는 경우도 많고, 동시에 처리되길 원하는 Gesture가 동시에 동작하지 않는 경우가 그 대표적인 예시입니다. 따라서 오늘은 애플 개발자 문서에 등록된 Article인 Coordinating Multiple Gesture Recognizers를 기반으로 하나의 View에 등록된 여러 Gesture Recognizer들의 작업을 원하는대로 처리하는 방법을 알아보겠습니다. OverView Gesture recognizer는 입력된 터치 이벤트를 개별적으로 추적하지만, UIKit은..

🍎 Apple/UIKit 2022.02.05

[iOS Architecture] MVC, MVP, MVVM (feat. Clean Architecture)

안녕하세요 이누입니다. 개인적으로 아키텍처 부분이 많이 부족하다는 생각이 들어서 Clean Architecture 이론과 MVC, MVP, MVVM 아키텍처의 개념을 최대한 iOS의 관점에서 바라보며 공부하고 정리해봤습니다. 그럼 시작할게요! Clean Architecture 먼저 Clean Architecture에 대해서 간단하게 이야기해보겠습니다. Clean Architecture는 Robert C. Martin(a.k.a Uncle Bob)님이 제안하신 '좋은 아키텍처'에 대한 이론입니다. (위 그림에 나오는 각 레이어의 자세한 역할과 의미에 대해서는 원글(https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)을 참..

🍎 Apple/Patterns 2022.01.30