.h文件中的代码
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
.m文件中的代码
@synthesize managedObjectContext = __managedObjectContext;
我是目标c的初学者,我想知道@synthesize managedObjectContext; and @synthesize managedObjectContext = __managedObjectContext;
之间有什么区别可以解释一下吗?
答案 0 :(得分:3)
@synthesize propertyName
创建一个变量以使用与属性相同的名称来支持该属性,而@synthesize propertyName = variableName
为变量提供一个替代名称(可能是以下划线为前缀的属性名称)。
请注意,在使用@synthesize
的最新版本的Xcode附带的编译器中不再需要:编译器会找出需要合成的属性,并隐式插入
@synthesize propertyName = _propertyName;
为每个需要合成的属性。
答案 1 :(得分:0)
如果您使用
@synthesize managedObjectContext = __managedObjectContext;
你可以写这样的行:
__managedObjectContext = someContext;
它将通过直接访问它来更改存储在此属性中的值,而不使用setManagedObjectContext:方法。
但是,这行不正确(除非你之前声明了一些其他的managedObjectContext):
managedObjectContext = someContext; //wrong
self.managedObjectContext = someContext; //good
P.S。顺便说一下,What exactly does @synthesize do?