2010-01-05 33 views
0

在循環中將對象添加到NSMutableArray時,有哪些最佳實踐可用於重新使用爲要添加到數組的對象分配的內存?添加到NSMutableArray時在循環中重用對象

例如:

for (int i = 0; i < 5; i++) 
{ 
    SampleObject *sampleObject = [[SampleObject alloc] init]; 
    sampleObject.someProperty = ... 

    [sampleObjectArray addObject:sampleObject]; 
    [sampleObject release]; 
} 

這是正確的做法?我有sampleObjectArray作爲一個財產(非原子,保留)就可以了。它應該是複製而不是保留?

分配出循環,然後在循環完成時釋放會更好嗎?

回答

4

你是否分析了你的代碼,發現這對你來說是個問題?如果不是,不要擔心微觀優化。

也就是說,陣列保持對它們包含的對象的強烈引用 - 當對addObject:的調用完成時,sampleObjectArraysampleObject上有保留。因此,我認爲你給出的示例代碼是適當的 - 你alloc/init的對象,所以你release它作爲合適的,它是由它生活在陣列扶住只有

至於alloc荷蘭國際集團圈外的,我。我不確定這會起作用 - 對於陣列中的每個條目,您仍然需要alloc,否則您會收到同一對象的五份副本。這最好在一個循環內完成,如果它在一個循環中,爲什​​麼不在相同的循環中作爲已有的循環?

相關問題