我开始更好地理解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];
我不确定那里会发生什么,当它释放 nothing 时,但说该属性已经有一个值,我们设置它。在 setter 中,它首先被释放。所以这不是让它消失吗?如果它的引用计数为 1,然后在 setter 中释放它,它如何保持设置为保留的新值?
谢谢!!