데이터 저장
ObjC 런타임 기반 모델 매핑과 Swift 의 대체
Objective-C 시절 YYModel·MJExtension 은 클래스 정의만 있으면 JSON→모델 변환과 NSCoding 아카이빙까지 자동으로 해 줬습니다. 런타임의 어떤 기능으로 가능했나요?
면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
Objective-C 시절 YYModel·MJExtension 은 클래스 정의만 있으면 JSON→모델 변환과 NSCoding 아카이빙까지 자동으로 해 줬습니다. 런타임의 어떤 기능으로 가능했나요?
ObjC 런타임의 리플렉션 덕분이다. class_copyPropertyList로 클래스의 프로퍼티를 런타임에 열거해 이름과 타입을 읽고, KVC의 setValue:forKey:로 JSON 값을 주입했다. 아카이빙도 같은 방식으로 프로퍼티를 순회하며 인코딩하고, 프로퍼티 메타는 클래스별로 한 번 캐시해 성능을 확보했다.
데이터 저장주관식기초
레거시 코드가 NSKeyedArchiver로 모델 객체를 파일에 저장합니다. 최근 OS에서 언아카이브 시 경고와 크래시가 나기 시작했습니다. NSCoding과…
#codable #nssecurecoding
아키텍처주관식기초
Objective-C 런타임의 KVO는 내부적으로 어떻게 프로퍼티 변화를 감지하나요?
#kvc
빌드·배포주관식심화
출시된 앱에 치명적인 버그가 있는데 App Store 심사를 기다릴 수 없습니다. 과거 중국 앱들이 쓰던 JSPatch 같은 동적 코드 패치를 Apple은 왜…
#objective-c
동시성주관식심화
프로퍼티를 '여러 스레드가 동시에 읽되 쓰기는 한 번에 하나만' 되게 만들려고 합니다. Objective-C 시절엔 getter에서 dispatch_sync…
#objective-c