NSArray:释放它的对象,但保持指向它的指针

时间:2010-05-17 13:57:45

标签: objective-c nsarray

我在代码中声明了一个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。?

谢谢!

2 个答案:

答案 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
}