鑑於以下屬性定義: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