我知道這個問題已經討論過了,但我只是沒有得到一些內存管理。我明白,保留使對象保持活動狀態,並且複製給對象一個單獨的副本。Objective C Memory Management Woes
我不明白的是,當涉及到的ivars &性質,保留的屬性意味着二傳手釋放舊值&保留新:
property = newValue;
// retain
if (property != newValue)
{
[property release];
property = [newValue retain];
}
但我看到的例子,其中他們將靜態字符串分配給retain屬性ivars,例如
self.stringProperty = @"something";
(some other code)
self.stringProperty = @"somethingElse";
第二次調用設置字符串應該調用釋放上這是不允許的靜態字符串,爲什麼不程序崩潰?
另外,如果一個對象用retain屬性&聲明,那麼就爲它指定了一些內容,例如,
@property(retain)someArray;
someArray = [[NSArray alloc] initWithArray:arbArray];
這是否意味着現在的someArray具有2的保留計數,但如果它與
someArray = [NSArray arrayWithArray:arbArray];
創建保留計數僅爲1,因爲第二個是一個工廠方法?
對不起,我的意思是self.someArray在這兩個樣本。 – 2010-07-12 06:49:32