概要分析表明在每次迭代中存在一個對象泄漏,並且數組對象泄漏。概要分析顯示循環的每次迭代中存在泄漏
fetchedRecords
是一個數組從executeFetchRequest:
方法返回,我敢肯定,返回一個autoreleased數組。
-(NSArray *)getSavedVenues
{
NSMutableArray *venues = [[@[] mutableCopy] autorelease];
for (Venues *venueManagedObject in fetchedRecords)
{
MSVenue *tmp = [[MSVenue alloc] init];
[tmp setID:venueManagedObject.venueID];
[tmp setName:venueManagedObject.venueName];
[venues addObject:tmp];
[tmp release];
tmp = nil;
}
return [NSArray arrayWithArray:venues];
}
這個看起來很奇怪: 'NSMutableArray * venues = [[@ [] mutableCopy] autorelease];',爲什麼不創建NSMutable數組的實例而不是創建NSArray的可變副本? –
@MykolaDenysyuk - 是的,我懷疑這是問題,但它有點愚蠢。 '[NSMutableArray數組]'更加清晰和高效地完成了同樣的事情。 –
你的問題不清楚。我們是否看到上面'for'循環的迭代,或者這個方法之外的某些循環的迭代?上面的代碼會在每次迭代時「積累」一個MSVenue對象,因爲這就是你在數組中放置的內容。這很正常。 –