2011-07-07 74 views
0

對於新手問題抱歉,但我需要一個帶有一些NSNumber的NSMutableArray,在for循環中動態創建。我的代碼如下所示:用NSNumber對象增長一個NSMutableArray

for (...){ 
NSNumber *temp_number = [[NSNumber alloc] initWithInteger:someNSInteger]; 
     [target_array addObject:[temp_number copy]]; 
     [temp_number release]; 
} 

這是一個正確的方法嗎?它泄漏嗎?

謝謝!米格爾

回答

3

是的,那是泄漏。你想:

NSNumber *temp_number = [[NSNumber alloc] initWithInteger:someNSInteger]; 
    [target_array addObject:temp_number]; 
    [temp_number release]; 

所以,沒有copy。邏輯是因爲你使用alloc,你最終擁有temp_number。然後將它添加到數組中,並且該數組可以執行任何所需的操作。您已將temp_number用於其預期目的,因此您不再想擁有它並將其釋放。

如果您要獲取副本,則會創建另一個您也擁有的NSNumber實例,因此您在完成時還應該發佈該實例。在實踐中,數組(如果它被分配並存在,而不是零),將自己保留該對象,但是這是該類的特定實現細節,而不是您應該依賴或者特別感興趣的東西超出了合約的範圍,這表明您添加的對象稍後可以在數組中找到。

相關問題