【问题标题】:property 'description' will not synthesize property属性“描述”不会合成属性
【发布时间】:2015-03-10 13:29:47
【问题描述】:

我有这段代码,在一些 .h 文件中:

@interface StatusData :JSONModel <NSCoding>
@property (strong, nonatomic)NSString <Optional> *description;
@end

我收到了这个警告:

自动属性合成不会合成属性“描述” 因为它是“读写”,但它将通过“只读”合成 另一个属性

这在运行时给了我异常:


由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',

原因:'-[ setDescription:]: 无法识别的选择器发送到实例


有没有办法将 'description' 属性覆盖为可读写?

【问题讨论】:

    标签: objective-c exception properties read-write


    【解决方案1】:

    'description' 是 NSObject 的 readonly 属性:

    @property (readonly, copy) NSString *description; (line 43)
    

    将属性名称更改为其他名称 - 这是避免异常的最简单解决方案。

    无论如何,在我找到覆盖描述属性的方法之前,这只是一个临时解决方案。

    【讨论】:

    • 为什么要覆盖NSObject 的description 属性?我建议阅读stackoverflow.com/questions/5650887/… 以了解何时最好覆盖一个属性以及何时最好只覆盖它的getter 和setter。就我个人而言,我认为您没有理由覆盖此属性,并且建议您只使用不同的属性名称。
    • @Popeye 感谢您的回复。我会检查覆盖设置器。基本上你是对的 - 选择一个不同的名字是最好的,但在这种情况下,它是一个来自服务器的 json 字段,我将它转换为一个类......
    猜你喜欢
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多