@protocol xx;遵循预声明协议导致YYModel解析失败


//预声明协议
@protocol AnimalProtocol;

@protocol DogProtocol <AnimalProtocol>
@end

@protocol AnimalProtocol <NSObject>

@property (strong, nonatomic) NSNumber *name;

@end

@protocol CatProtocol <AnimalProtocol>
@end

若有Dog类实现DogProtocol协议,Cat类实现CatProtocol协议,
对于同样的json字符串

@{
    @"name":"xiaohua"
}

使用YYModel解析后发现后会发现Dog.name == NULLCat.name== @"xiaohua"
runtime打印Dog类和Cat类的属性列表后发现:
遵循DogProtocol的对象:
---property列表不包含AnimalProtocol中定义的变量
---Ivar列表包含AnimalProtocol中定义的变量
遵循CatProtocol的对象:
---property列表包含AnimalProtocol中定义的变量
---Ivar列表包含AnimalProtocol中定义的变量
由于YYModel是使用property列表来做映射的,因此Dog.name解析为NULL。
因此预声明协议这种方式会导致YYModel解析失败。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容