分析告诉每次迭代都有MSVenue
个对象泄漏,并且数组对象泄漏。
fetchedRecords
是从executeFetchRequest:
方法返回的数组,我确定会返回一个自动释放的数组。
-(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];
}
答案 0 :(得分:-2)
尝试更改:
[tmp setName:venueManagedObject.venueName];
到
[tmp setName:[NSString stringWithString:venueManagedObject.venueName]];
根据您在MSVenue中声明Name属性的方式,您可能正在创建对另一个对象venueName
的强引用,从而阻止该对象被释放。这是一个循环引用 - fetchedRecords
将不会自动释放,直到引用它的所有对象都被释放,并且在fetchedRecords
被释放之前它们不会被释放。
与venueId相同,除非它是标量类型(例如NSInteger)。