@objc dynamic property 저번 시간에 KVO(Key-Value Observing)에 대해서 알아봤습니다. 그런데 KVO를 공부하던 중 관찰하고 싶은 Property앞에 붙는 @objc dynamic은 대체 어떤 역할을 하며 어떤 의미를 가지고 있는지 궁금해졌고 알아보기로 마음 먹고 글을 작성하게 되었습니다. dynamic 어원 그대로 활발한이란 뜻을 가지고 있습니다. '동적'이라는 의미도 되구요. 뜻에 따라서 말 그대로 dynamic 키워드를 붙힌 property는 동적으로 동작될 수 있도록 해준다는 의미입니다. 동적으로 동작한다의 의미? 이 의미를 알기 위해서는 정적 디스패치(Static Dispatch)와 동적 디스패치 (Dynamic Dispatch)의 개념에 대해서 알아보겟습니다...
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를 어떻게 사용하..
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..
Method Swizzling 이번에는 Method Swizzling이라는 개념에 대해서 알아보자. Swizzle이라는 단어를 번역하면 '뒤섞다'라는 뜻입니다. 말 그대로 'Method' 특정 함수를 특정 시점에 'Swizzle' 뒤섞는다는 개념인거죠. 그렇다면 해당 메서드를 언제 뒤섞는 작업들이 필요할까요? 예를 들어 Firebase를 사용할 때 해당 ViewController에서 ViewWillAppear 같은 메서드가 몇 번 실행되는지와 같은 분석 기능을 추가할 때 사용하게 됩니다. Firebase Console Document를 살펴보면 Method Swizzling에 대한 설명이 나오는 것을 볼 수 있습니다. Method Swizzling은 Objective-C의 런타임 기능 중 하나이므로 어떤..
ARC(Automatic Reference Count) 애플 공식문서를 참고해서 공부한 내용을 작성해보았습니다. https://bbiguduk.gitbook.io/swift/language-guide-1/automatic-reference-counting 자동 참조 카운팅 (Automatic Reference Counting) - Swift 이것을 가능하게 하려면 프로퍼티, 상수, 또는 변수에 클래스 인스턴스를 할당할 때마다 해당 프로퍼티, 상수, 또는 변수는 인스턴스에 강한 참조 (strong reference) 를 만듭니다. 참조는 해당 인스 bbiguduk.gitbook.io ARC(Auto Reference counting)는 단어 그대로 '자동으로 참조 개수'를 추적하고 관리하여 메모리 사용량을..
Protocol(프로토콜)이란? https://docs.swift.org/swift-book/documentation/the-swift-programming-language/protocols/ Documentation docs.swift.org 공식문서에 프로토콜을 다음과 같이 정의하고 있습니다. `프로토콜(Protocol)` 은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의한다. 프로토콜이라는 문법을 처음봐서 생소하기도 했고 어려웠습니다. 이번 시간에 차근차근 알아가보겠습니다. 프로토콜은 클래스, 구조체, 열거형에 의해 채택될 수 있다고 합니다. 채택된 타입에서 요구사항을 모두 충족한다면 해당 프로토콜을 '준수'한다고 말할 수 있습니다. Protocol 기본 문법 Pr..