我开始更好地理解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