美文网首页
@protocol xx;遵循预声明协议导致YYModel解析失

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

作者: FlameGrace | 来源:发表于2019-10-12 15:50 被阅读0次

//预声明协议
@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解析失败。

相关文章

网友评论

      本文标题:@protocol xx;遵循预声明协议导致YYModel解析失

      本文链接:https://www.haomeiwen.com/subject/tvgqmctx.html