2011-03-15 73 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)有詳細的解釋。