簡體   English   中英

從NSArray中刪除對象

[英]Remove objects from NSArray

我有一個ARC項目。

我有一個NSArray whit內部的一些對象。 在某些時候,我需要更改數組中的對象。

Whit一個NSMutableArray我會做:

[array removeAllObjects];

我確信這個方法會釋放數組中包含的所有對象。 但是對於NSArray我不能那樣做! 所以,我的問題是:如果我將數組設置為nil然后重新初始化它,那么數組中包含的舊對象是否真的從內存中釋放出來?

array = nil;
array = [[NSArray alloc] initWithArray:newArray];

或者我需要使用NSMutableArray

你可以這樣做:

array = newArray;

這將導致array被釋放。 當此NSArray被釋放時,所有包含的對象也將被釋放。

當沒有更強的引用時,舊數組將被釋放。 如果你有唯一的強引用,那么當你將array設置為其他東西時,它將立即被釋放。

當舊數組被釋放時,它將釋放它包含的所有對象。 如果沒有對這些對象的其他強引用,它們也將立即被釋放。

在將其設置為新數組之前,您不必設置array = nil

我建議使用NSMutableArray,因為不會再有分配和釋放的開銷

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM