为什么我不需要为这个 Core Data 属性提供 ivar?
这里发生了什么,所以我不需要将 ManagedObjectContext 声明为 ivar? __managementObjectContext
存在于哪里?双下划线前缀是什么?
标头
@interface CAHistoryController : NSObject {}
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@end
实现
@implementation EBHistoryController
@synthesize managedObjectContext=__managedObjectContext;
- (NSManagedObjectContext *)managedObjectContext
{
if (__managedObjectContext != nil)
{
return __managedObjectContext;
}
// ...etc
}
What is the sourcery going on here that makes it so I don't need to declare managedObjectContext as an ivar?? Where does __managedObjectContext
exist? What is with the double-underscore prefix?
Header
@interface CAHistoryController : NSObject {}
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@end
Implementation
@implementation EBHistoryController
@synthesize managedObjectContext=__managedObjectContext;
- (NSManagedObjectContext *)managedObjectContext
{
if (__managedObjectContext != nil)
{
return __managedObjectContext;
}
// ...etc
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
@synthesize 在相对较新的编译器版本中增强了自动合成关联存储的能力(实际上,虽然模拟器最初不支持这种模式,但并不是那么新)。
@synthesize grew the ability to automatically synthesize the associated storage in a relatively recent compiler release (actually, not so recent though the simulator initially didn't support this pattern).
@synthesize 不带 =;部分将生成一个与属性名称同名的 ivar。当您执行 =时,您告诉它创建一个具有不同名称的 ivar。
@synthesize without the =<somename> part would generate an ivar with the same name as the property name. When you do =<somename>, you tell it to make an ivar with a different name.