我是新來的Objective-C 2.0(來自.NET C#),我發現了屬性。 它們對於處理內存管理(保留)非常方便。命名屬性不同於它們的實例var?
所以我可以設置在init方法的增值經銷商很容易像
@property (retain) NSDate *d1, *d2;
和
@synthesize d1, d2;
-(id)init {
if (self = [super init]) {
// initialize Properties
self.d1 = [NSDate date];
self.d2 = [NSDate date];
}
return self;
}
有時我忘了(可能是因爲我的.NET背景)使用「自「。它看起來很熟悉,並不像真正的糟糕編碼。所以我可能會錯過它再次未來......
-(id)init {
if (self = [super init]) {
// initialize Properties
d1 = [NSDate date];
d2 = [NSDate date];
}
return self;
}
但是,這將導致EXC_BAD_ACCESS侵犯時,酒店將使用self.d1 = [NSDate date];
或從外部objXy.d1 = [NSDate date];
我將不勝感激,當設置編譯器會警告我直接使用屬性而不是通過合成的消息。這可以通過命名不同於屬性的實例var來輕鬆完成。
想知道,如果有人這樣做,或在另一個...? 我的研究表明,這是可能的,但我需要在頭文件中自行聲明變量。爲此,我會使用一個前綴(_是爲CF保留的),所以我需要一些更大的像XY_ ... hm ...並非真的那麼得心應手......
爲什麼不具有屬性的屬性就像(唯一的),它將生成一個實例var,其名稱與屬性名稱不同... @apple