mk1*_*k12 0 memory-management properties objective-c retain
我开始在objective-c中更好地理解内存管理,但有些东西我不明白.这是一个属性声明:
@property (nonatomic, retain)UILabel *myLabel;
Run Code Online (Sandbox Code Playgroud)
这是它看不见的合成二传手(我认为):
- (void)setMyLabel:(UILabel *)newValue {
if(myLabel != newValue) {
[myLabel release];
myLabel = [newValue retain];
}
}
Run Code Online (Sandbox Code Playgroud)
这节省了你每次保留和填充的所有工作,但是说我第一次设置我的属性,它还没有被分配,所以它的引用数是0,对吧?所以我这样做
UILabel *tempLabel = [[UILabel alloc] init];
self.myLabel = tempLabel;
[tempLabel release];
Run Code Online (Sandbox Code Playgroud)
我不确定那里会发生什么,什么时候什么也没发布,但是说这个属性已经有了值,我们设置了它.在setter中,首先它被释放.那不是让它消失吗?如果它的引用计数是1,然后在它发布的setter中,它如何保持设置为保留的新值?
谢谢!!