2013-04-04 63 views
0

代码在.h文件中差异合成属性的目标C

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

守则.m文件

@synthesize managedObjectContext = __managedObjectContext; 

我在Objective C的初学者,我不知道是什么@synthesize managedObjectContext; and @synthesize managedObjectContext = __managedObjectContext;之间的差异可以解释一下吗?

+0

感谢您的这些链接,非常有用对不起,我没有更早看过 – Dolo 2013-04-04 11:17:01

回答

3

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

注意,在随使用@synthesize中的Xcode最新版本的编译器不再是必要的:编译器计算出什么属性需要合成,并含蓄地插入

@synthesize propertyName = _propertyName; 

为需要是每个属性合成。

0

如果使用

@synthesize managedObjectContext = __managedObjectContext; 

你可以写行是这样的:

__managedObjectContext = someContext; 

,它会通过直接访问它,而不setManagedObjectContext改变存储在此属性的值:方法。

然而,这条线将是不正确的(除非你之前声明一些其他managedObjectContext):

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

附:顺便说一句,What exactly does @synthesize do?