類方法[這是存儲器管理澄清/問題]返回對象和所有權轉移
- 我有一個返回一個NSMutableArray *一個類的方法。
- 我希望調用者擁有它並且必須調用release。
- 我不想使用AutoRelease,因爲一旦調用者完成,我想從內存中釋放它。
只要我用new或alloc開始名稱,這是正確的嗎?
例如
+ (NSMutableArray*) newArrayFromDB
{
NSMutableArray* myArray = [[NSMutableArray alloc] init];
//stuff to populate array
return myArray;
}
然後調用者會要求有:
NSMutableArray* test = [ThatClass newArrayFromDB];
//use test
[test release];
靜態分析器似乎認爲這是確定......但我想第二個意見...
感謝您的反饋....
你爲什麼要這樣?是什麼讓這個案例變得特別? – Chuck 2011-01-26 02:29:49
我沒有意識到(正如David所指出的那樣)默認的自動釋放池每次都通過主循環被耗盡。我錯誤地認爲它在游泳池本身超出範圍之前不會流失。我現在很高興地返回一個Autoreleased NSMutableArray。 – 2011-02-22 02:14:11