Joh*_*tty 4 core-data objective-c nsmanagedobject llvm-clang
在我的项目中,我正在使用coredata.其中一个实体有一个名为newTotal的属性,在其对应的NSManagedObject类中属性声明就像
@property (nonatomic, strong) NSString *newTotal;
Run Code Online (Sandbox Code Playgroud)
如果我在NSObject子类中添加这样的属性,XCode将显示如下错误
error: property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
Run Code Online (Sandbox Code Playgroud)
但是在NSManaged对象子类中,它没有显示错误,但是当访问属性时应用程序崩溃,就像EXC_BAD_ACCESS一样.
为什么XCode没有显示错误但是应用程序崩溃了?这是XCode/clang/LLVM的错误吗?
我知道它与合成相关的东西.NSManagedObject子类没有合成其中的属性,但@dynamic指令只是告诉编译器getter和setter方法不是由类本身实现,而是由其他地方实现(如超类或将在运行时提供).但我对此没有明确的想法.任何人都可以对这个问题有一个清晰的认识吗?
我可以看到你正在使用ARC.
在ARC中,内存是为您管理的,但您自己可以/不得不做的事情很少.您不能将属性命名为"newXxxx",因为:
您不能为访问者提供以new开头的名称.这反过来意味着你不能,例如,声明一个名称以new开头的属性,除非你指定一个不同的getter:
//无效
@property NSString *newTitle;
Run Code Online (Sandbox Code Playgroud)
//作品:
@property (getter=theNewTitle) NSString *newTitle;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |