我有一个函数,它根据一个似乎是内存泄漏严重的谓词返回一个NSManagedObject。
- (WordMap *)getWordMapForLetter:(NSString *)letter
{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"WordMap" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
WordMap *wordMap = Nil;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"letter == %@", letter];
[fetchRequest setPredicate:predicate];
NSError *error;
NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if ([fetchedObjects count] > 0) {
wordMap = (WordMap *)[fetchedObjects objectAtIndex:0];
}
return wordMap;
}
问题看起来特别在于以下行,因为注释它会阻止泄漏......
wordMap = (WordMap *)[fetchedObjects objectAtIndex:0];
我假设问题是我正在返回对在函数范围内创建的数组项的引用,因此ARC之后不能处理该数组?
这是正确的还是完全没问题?无论如何,我完全不确定如何停止泄漏建议?