當從使用NSMutableArray
動態構建數組的方法返回NSArray
(或NSDictionary
等)時,執行此操作並避免隨機數的標準方法是什麼使用ARC時內存泄漏?從具有NSArray返回值的方法返回NSMutableArray對象
例如,假設我們有一些類名稱的列表,我們想手動過濾並抓住所有以給定的字母開始的名字:
- (NSArray *)getNamesByFirstLetter:(NSString *)firstLetter
{
NSMutableArray *returnValue = [[NSMutableArray alloc] init];
for(id item in self.names)
{
if([item hasPrefix:firstLetter])
{
[returnValue addObject:item];
}
}
return returnValue; // just return the above array
}
當談到回國價值,我能想到的四種可能的方式來做到這一點:
返回的
NSMutableArray
直接(如上)return returnValue;
返回使用
NSArray arrayWithArray
一個copy
return [returnValue copy];
回程:
return [NSArray arrayWithArray:returnValue];
創建
NSArray
,手動設置NSMutableArray
到nil
:NSArray *temp = [NSArray arrayWithArray:returnValue]; // could use [returnValue copy] here too returnValue = nil; return temp;
當一個程序使用ARC時,這四種方法之間是否存在真正的區別,還是僅僅歸結爲個人偏好?
另外,除了可能的內存泄漏之外,當使用一種方法而不是另一種方法時,還會有其他的含義嗎?
請注意,如果這是重複的,請告訴我,我將回答這個問題。我試圖搜索,但很難將問題簡化爲幾個搜索條件。
沒有詳細說明,這些都不會導致啓用ARC的內存泄漏。我必須指出,雖然4和3在ARC環境中是等效的 – Jack