//預(yù)聲明協(xié)議
@protocol AnimalProtocol;
@protocol DogProtocol <AnimalProtocol>
@end
@protocol AnimalProtocol <NSObject>
@property (strong, nonatomic) NSNumber *name;
@end
@protocol CatProtocol <AnimalProtocol>
@end
若有Dog類實(shí)現(xiàn)DogProtocol協(xié)議九昧,Cat類實(shí)現(xiàn)CatProtocol協(xié)議恩尾,
對(duì)于同樣的json字符串
@{
@"name":"xiaohua"
}
使用YYModel解析后發(fā)現(xiàn)后會(huì)發(fā)現(xiàn)Dog.name == NULL而Cat.name== @"xiaohua"质况。
runtime打印Dog類和Cat類的屬性列表后發(fā)現(xiàn):
遵循DogProtocol的對(duì)象:
---property列表不包含AnimalProtocol中定義的變量
---Ivar列表包含AnimalProtocol中定義的變量
遵循CatProtocol的對(duì)象:
---property列表包含AnimalProtocol中定義的變量
---Ivar列表包含AnimalProtocol中定義的變量
由于YYModel是使用property列表來做映射的威彰,因此Dog.name解析為NULL粪薛。
因此預(yù)聲明協(xié)議這種方式會(huì)導(dǎo)致YYModel解析失敗。