2011-03-15 56 views
0
-(NSArray*)getNeighbors{ 
     NSArray *values = [neighbors allValues];//neighbors is NSMutableDictionary 
     return values; 
} 

我有一个非常简单的代码是这样,但我不知道,我需要加上“保留” ......目标C,返回数组

+1

不要称之为getNeighbors。只是“邻居”是标准模式 – bbum 2011-03-15 15:39:52

回答

1

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

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

OR的情况下,当你不需要保留:

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

你不知道。调用getNeighbors的方法应该注意保留返回的数组。

0

您可以发送retainreleaseNSObject继承的每个对象,这取决于你需要。但在你的情况下,values是你不拥有的对象,你应该特别注意你如何处理它。欲了解更多信息,请咨询Object Ownership and Disposal

0

你不知道。此页(1)有详细的解释。