2010-05-17 55 views
0

我在我的代碼中聲明一個NSArray,然後從另一個數組構建數組。我處理我的NSArray,當我完成後,我想釋放這些對象,但是我稍後再次將此指針用於NSAarray以執行相同的過程(從另一個數組創建數組,然後釋放)。我需要保持指針。 我該怎麼辦?NSArray:釋放它的對象,但保留一個指針

這大致就是我想要做的buildArray被創建並返回一個自動釋放的NSArray:

NSArray *myArray; 
for (int i = 0, i < 10, i++){ 
    myArray = [NSArray arrayWithArray:[self buildArray]]; 
    // Here I process myArray 

    ... 

    myArray = nil; // is my guess 
    } 

我需要一個指針保持我的NSArray,以在循環後重復使用,但使用[self buildArray]創建的對象發生了什麼?爲了不使用未使用的對象和數組,最好做什麼?

或者最好的解決辦法是簡單地removeAllObject的數組.. ..?

謝謝!

回答

1

因爲它不可變,所以不能重用NSArray。不過你可以使用NSMutableArray(支持-removeAllObjects)。

如果你需要的是保持指針,但並不需要它的循環中恆定的,你可以只使用

loop { 
    NSArray* myArray = [self buildArray]; 
    ... 
    // myArray = nil; // optional. 
} 
+0

所以,當我myarray的設置爲零,對象將是發佈? – leochab 2010-05-17 14:13:02

+0

@Leo:不會的。 – kennytm 2010-05-17 14:17:44

+0

所以我應該怎麼做才能釋放它們?我認爲它會asbuildArray返回一個autoreleased數組.. – leochab 2010-05-17 15:49:26

0

不要這樣做。相反,請執行以下操作:

for (int i = 0, i < 10, i++){ 
    NSArray *myArray = [self buildArray]; //buildArray should return an autoreleased object 
    //Process array 
    //myArray goes out of scope and is autoreleased later, releasing all of its objects 
}