2013-04-04 90 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?