iOS

iOS/Swift

Swift - @objc dynamic property

@objc dynamic property 저번 시간에 KVO(Key-Value Observing)에 대해서 알아봤습니다. 그런데 KVO를 공부하던 중 관찰하고 싶은 Property앞에 붙는 @objc dynamic은 대체 어떤 역할을 하며 어떤 의미를 가지고 있는지 궁금해졌고 알아보기로 마음 먹고 글을 작성하게 되었습니다. dynamic 어원 그대로 활발한이란 뜻을 가지고 있습니다. '동적'이라는 의미도 되구요. 뜻에 따라서 말 그대로 dynamic 키워드를 붙힌 property는 동적으로 동작될 수 있도록 해준다는 의미입니다. 동적으로 동작한다의 의미? 이 의미를 알기 위해서는 정적 디스패치(Static Dispatch)와 동적 디스패치 (Dynamic Dispatch)의 개념에 대해서 알아보겟습니다...

iOS/Swift

Swift - KVO(Key-Value Observing)

KVO(Key-Value Observing) KVO는 Key-Value-Observing의 약자입니다. 약자에서 예상할 수 있듯이 KVO는 Key를 통해 Value 값을 Observing(관찰)하는 것을 말합니다. KVO 예시 class People { var age: Int var name: String init() { self.age = 15 self.name = "철수" } } People이라는 클래스를 하나 만들었습니다. 여기서 저희는 사람의 나이가 변할 때마다 어떤 특정 조건을 통과하는지 검사하고 싶다고 하겠습니다. 그렇다면 age 프로퍼티의 값(value)가 변화하는 것을 검사해주면 될 것입니다. 여기서 KVO를 사용하면 age 프로퍼티의 값 변화를 감지할 수 있습니다. KVO를 어떻게 사용하..

iOS/Swift

Swift - Swift에서는 왜 문자열을 Subscript로 접근할 수 없을까?

Swift에서는 왜 문자열을 Subscript로 접근할 수 없을까? 다른 언어와의 차이점(Subscript) 다른 프로그래밍 언어를 배우다가 Swift를 배웠을 때 제일 처음 당혹스러운 것이 문자열을 Subscript문법으로 접근이 불가능하는 것을 알게됐을 때 많이 당황했던 것 같습니다. - Python # python text = "Python" result = text[0] print(result) # P - Javascript // Javascript var text = "Javascript" var result = text[0] console.log(result) // J - Swift var text = "Swift" var result = text[0] >>> 'subscript' is una..

iOS/Swift

Swift - Method Swizzling

Method Swizzling 이번에는 Method Swizzling이라는 개념에 대해서 알아보자. Swizzle이라는 단어를 번역하면 '뒤섞다'라는 뜻입니다. 말 그대로 'Method' 특정 함수를 특정 시점에 'Swizzle' 뒤섞는다는 개념인거죠. 그렇다면 해당 메서드를 언제 뒤섞는 작업들이 필요할까요? 예를 들어 Firebase를 사용할 때 해당 ViewController에서 ViewWillAppear 같은 메서드가 몇 번 실행되는지와 같은 분석 기능을 추가할 때 사용하게 됩니다. Firebase Console Document를 살펴보면 Method Swizzling에 대한 설명이 나오는 것을 볼 수 있습니다. Method Swizzling은 Objective-C의 런타임 기능 중 하나이므로 어떤..

iOS/RxSwift

RxSwift - API Request, Error Handling (+ Button Tap Stream), Single Traits

Rxswift button tap stream error handling 이번 포스팅의 주제는 로그인이나 회원가입 로직 등을 구현할 때 버튼을 클릭하고 네트워크 통신을 RxSwift로 구현하였을 때 어떻게 에러 핸들링을 할 것인가? 에 대한 주제입니다. 문제 상황 해당 문제는 회원가입 기능을 구현하던 중 발생한 문제였습니다. 회원가입 시 필요한 정보(이메일, 비밀번호, 닉네임..) 등을 받고 마지막으로 로그인 버튼을 tap 한다면 해당 CombineLatest로 묶어놓았던 데이터들과 함께 Stream을 시작하여 네트워크 통신하는 Rx 로직을 구성하였습니다. 그 과정에서 flatMap을 통해 미리 싱글톤 패턴으로 구현해놓았던 NetWork 클래스 안의 로그인 API 통신 메서드를 호출하였습니다. - Net..

iOS/RxSwift

RxSwift - Unicast, Multicast

이번 시간엔 unicast, multicast의 개념에 대해 알아보자. Observable(unicast) vs Subject(multicast) Observable(unicast) - 1:1 연결방식의 특성을 가지고 있어서 독립적인 실행을 가지며, sequence가 내부적으로 공유되지 않는다. Subject(multicast) - 1:N 연결 방식의 특성을 가지고 있어서 해당 sequence가 내부적으로 공유된다. 사실 설명이나 그림만 보면 선뜻 잘 이해가 가지 않을 수 있다. 그래서 예시 코드로 어떻게 출력이 되는지 확인해보면 훨씬 직관일 것이라 생각이 든다. 한번 코드를 살펴보자. // 1. Observable func aboutUnicast() { let random = Observable.cre..

ios-hans
'iOS' 카테고리의 글 목록