0

.h 文件中的代码

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;

.m 文件中的代码

@synthesize managedObjectContext = __managedObjectContext;

我是 Objective c 的初学者,我想知道有什么区别 @synthesize managedObjectContext; and @synthesize managedObjectContext = __managedObjectContext;可以解释一下吗?

4

2 回答 2

3

@synthesize propertyName创建一个变量来支持与属性同名的属性,同时为@synthesize propertyName = variableName变量提供一个替代名称(可能是属性名称以下划线为前缀)。

请注意,在最新版本的 Xcode 附带的编译器中,@synthesize不再需要 using:编译器会找出需要合成的属性,并隐式插入

@synthesize propertyName = _propertyName;

对于需要合成的每个属性。

于 2013-04-04T11:11:11.423 回答
0

如果你使用

@synthesize managedObjectContext = __managedObjectContext;

你可以这样写:

__managedObjectContext = someContext;

并且它将通过直接访问它来更改存储在此属性中的值,而无需 setManagedObjectContext: 方法。

但是,此行将是不正确的(除非您在它之前声明了其他一些 managedObjectContext):

managedObjectContext = someContext; //wrong
self.managedObjectContext = someContext; //good

PS 顺便说一句,@synthesize 到底是做什么的?

于 2013-04-04T11:18:11.013 回答