중화사전망 - 서예자전 - IOS 소스 코드 분석 -YY 모델 (nsobject+YY 모델)
IOS 소스 코드 분석 -YY 모델 (nsobject+YY 모델)
-응? 세 가지 범주와 하나의 프로토콜로 구성된 NSObject+YYModel.h 파일 분석:
사전 studentDic 의 키는 원본 사전 playerDic 의 키에 해당하며 studentDic 의 모델은 playerDic 의 값에 의해 변환됩니다.
먼저 모델의 정보와 모델의 각 속성에 대한 정보를 캡슐화하는 _YYModelMeta 및 _YYModelPropertyMeta 클래스를 정의합니다.
_YYModelMeta 유지 관리 클래스에 대한 정보는 다음과 같습니다.
_YYModelMeta 는 YYClassInfo 객체의 정보를 기반으로 구축됩니다. 먼저 metaWithClass:cls 메서드를 다음과 같이 호출합니다.
키 값 쌍 캐시를 유지 관리하고, cls 를 키로 사용하고, CFDictionaryGetValue 메서드를 호출하여 캐시에서 검색합니다. 있는 경우 구성된 _ _ _ _YYModelMeta 객체를 직접 반환합니다. 찾지 못했거나 needUpdate 속성이 true 로 표시된 경우 cls 에서 new _ yymodelmeta 객체가 생성되어 캐시에 저장됩니다. 매번 만들 필요가 없으므로 성능이 향상됩니다.
InitWithClass: 방법을 살펴 보겠습니다.
다음과 같은 몇 가지 중요한 방법을 분석합니다.
YYModel 의 전반적인 아이디어는 모델 속성의 유형을 기반으로 합니다. JSON 에서 이름에 해당하는 값 유형이 모델 속성의 유형과 일치하지 않으면 모델 속성의 유형과 일치하도록 값 유형이 변환됩니다. 호환되지 않으면 속성 할당이 수행되지 않습니다. ModelSetValueForProperty 메서드를 분석해 보겠습니다.
위에서 언급한 이 메서드는 JSON 이 Model 로 변환되는 동안 모델의 속성에 값을 지정하는 데 사용됩니다. 이 메서드는 다음과 같은 몇 가지 기본 유형과 호환됩니다.
YYModel 은 몇 가지 도구와 방법도 제공합니다. 다음은 간단한 분석입니다.
JSON 데이터 및 모델 변환을 담당하는 라이브러리로서 YYModel 은 매우 유용하고 효율적입니다. 특히 일부 유형의 호환성 및 변환에서는 서버 인터페이스 데이터 유형 및 클라이언트 모델 객체 유형 비호환성으로 인한 문제 (예: 존재하지 않는 방법 실행, 충돌 발생) 를 방지합니다. 한편 YYModel 에 대한 학습도 런타임 메커니즘에 대한 학습과 이해를 어느 정도 촉진시켰다.
YYModel 의 분석은 여기서 끝납니다. 제 iOS 기반은 향상되어야 하고 표현력이 제한되어 있기 때문에 글의 많은 부분에 대한 분석과 사고방식이 정확하지 않습니다. 앞으로의 학습과 실천을 통해 자신의 수준을 높이기를 희망합니다.