我在代码中声明了一个NSArray,然后从另一个数组构建数组。我处理我的NSArray,当我完成时,我想释放这些对象,但我稍后再次使用这个指针再次执行NSAarray来执行相同的过程(从另一个数组创建数组,然后释放进程)..所以我需要保持指针。 我该怎么办 ?
以下是我想要做的事情,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]创建的对象会发生什么?为了不保留未使用的对象和数组,最好做什么?
或许最好的解决方案就是删除数组的AllObject。?
谢谢!
答案 0 :(得分:1)
你不能重用NSArray,因为它是不可变的。您可以使用NSMutableArray(支持-removeAllObjects
)。
如果您需要保留指针,但在循环中不需要它,您可以使用
loop {
NSArray* myArray = [self buildArray];
...
// myArray = nil; // optional.
}
答案 1 :(得分: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
}