目标C,返回一个数组

时间:2011-03-15 14:43:46

标签: objective-c

 -(NSArray*)getNeighbors{
      NSArray *values = [neighbors allValues];//neighbors is NSMutableDictionary
      return values;
 }

我有一个非常简单的代码,但我不确定是否需要添加“retain”...

4 个答案:

答案 0 :(得分:2)

你没有。调用getNeighbors的方法应该保留返回的数组。

答案 1 :(得分:1)

这取决于您将如何处理返回值。 - [NSArray allValues]返回新数组,这是自动释放的,所以如果你计划长时间使用该数组(在函数范围之外),那么你应该保留它(但不能保留 - (NSArray *)getNeighbors)。保留数组(如果需要外部):

-(void) foo {
    ivar_array = [[someObject getNeighbors] retain];
}

或者您不需要保留的情况:

-(void) foo {
   NSArray* array= [someObject getNeighbors];
   //do something with that array
}

答案 2 :(得分:0)

您可以将retainrelease发送到从NSObject继承的每个对象,具体取决于您的需求。但在你的情况下,values是一个你不拥有的对象,你应该特别注意你如何处理它。有关详细信息,请参阅Object Ownership and Disposal

答案 3 :(得分:0)

你没有。此页面(1)有详细说明。