美文网首页
@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