在我的项目中,我正在使用coredata。实体之一具有名为newTotal的属性,在其对应的NSManagedObject类中,属性声明类似于
@property (nonatomic, strong) NSString *newTotal;
如果我在NSObject子类中添加这样的属性,则XCode将显示类似的错误
error: property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
但是在NSManaged对象子类中,它没有显示错误,但是访问属性时应用程序崩溃,就像EXC_BAD_ACCESS这样。
为什么XCode没有显示错误,但应用程序崩溃了?这是XCode / clang / LLVM的错误吗?
我知道它与合成有关。NSManagedObject子类没有在其中综合属性,但是@dynamic指令只是告诉编译器,getter和setter方法不是由类本身实现的,而是由其他地方实现的(例如超类或将在运行时提供)。但是我对此没有明确的想法。任何人都可以对这个问题给出清晰的主意吗?
我可以看到您正在使用ARC。
在ARC中,内存是为您管理的,但是您可以自己做一些事情。您不能将属性命名为“ newXxxx”,因为:
您不能给访问者一个以new开头的名称。反过来,这意味着,例如,除非您指定其他getter,否则不能声明名称以new开头的属性:
//无效:
@property NSString *newTitle;
//运作方式:
@property (getter=theNewTitle) NSString *newTitle;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句