Daily iOS
데이터 저장

ObjC 런타임 기반 모델 매핑과 Swift 의 대체

Objective-C 시절 YYModel·MJExtension 은 클래스 정의만 있으면 JSON→모델 변환과 NSCoding 아카이빙까지 자동으로 해 줬습니다. 런타임의 어떤 기능으로 가능했나요?

면접관은 이 답을 어떻게 들을까요? 넘어갈지, 더 물어볼지, 떨어뜨릴지 알려 주고, 걸리는 문장은 콕 집어 줘요. 점수는 그대로예요.
짧은 답 보기

ObjC 런타임의 리플렉션 덕분이다. class_copyPropertyList로 클래스의 프로퍼티를 런타임에 열거해 이름과 타입을 읽고, KVC의 setValue:forKey:로 JSON 값을 주입했다. 아카이빙도 같은 방식으로 프로퍼티를 순회하며 인코딩하고, 프로퍼티 메타는 클래스별로 한 번 캐시해 성능을 확보했다.

받은 질문 공유