鉴于以下属性定义:Objective-C的性能和内存管理
@property (nonatomic,retain) MyObject* foo;
没有下面的代码会导致内存泄漏:
self.foo = [[MyObject alloc] init];
?
看起来像alloc调用将对象上的保留计数递增到1,然后属性设置器中的保留将其增加到1.但是由于初始计数永远不会递减为0,因此即使在自我释放。分析是否正确?
如果是这样,它看起来像我有两个选择:不推荐在iPhone上由于性能原因,或
self.foo = [[[MyObject alloc] init] autorelease];
:
MyObject* x = [[MyObject alloc] init];
self.foo = x
[x release];
这是一个有点麻烦。还有其他的选择吗?
这是一个很好的选择,可以在创建实例时节省时间。 – 2010-02-18 23:05:56