我開始更好地理解Objective-C中的內存管理,但有些東西我不明白。這是屬性聲明:帶屬性的內存管理
@property (nonatomic, retain)UILabel *myLabel;
,這是它的看不見的合成二傳手(我認爲):
- (void)setMyLabel:(UILabel *)newValue {
if(myLabel != newValue) {
[myLabel release];
myLabel = [newValue retain];
}
}
這樣可以節省保留和東西,每次的所有工作,但說我把我的財產第一次,它尚未分配,所以其引用計數爲0,對不對?所以我做
UILabel *tempLabel = [[UILabel alloc] init];
self.myLabel = tempLabel;
[tempLabel release];
我真的不知道會發生什麼在那裏,當它釋放什麼,但說該屬性已有一個值,我們設置它。在制定者中,首先獲得釋放。那麼這不會消失嗎?如果它的引用計數是1,然後在引用計數器中它被釋放,那麼它是如何保持被設置爲保留的新值的?
謝謝!
由於這是有道理的。 – mk12 2009-07-31 15:03:08