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

2019-10-12  本文已影响0人  FlameGrace

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

上一篇 下一篇

猜你喜欢

热点阅读