【发布时间】:2010-02-18 22:57:44
【问题描述】:
给定以下属性定义:
@property (nonatomic,retain) MyObject* foo;
以下代码是否会导致内存泄漏:
self.foo = [[MyObject alloc] init];
?
看起来 alloc 调用将对象上的保留计数增加到 1,然后属性设置器中的保留将其增加到 1。但是由于初始计数从不减少到 0,因此即使当 self发行了。这个分析正确吗?
如果是这样,看来我有两种选择:
self.foo = [[[MyObject alloc] init] autorelease];
出于性能原因,不建议在 iPhone 上使用,或者:
MyObject* x = [[MyObject alloc] init];
self.foo = x
[x release];
这有点麻烦。还有其他选择吗?
【问题讨论】: