请查看以下代码:
- (NSArray *)requestEntities:(NSString *)entityName {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:entityName inManagedObjectContext:_context];
[fetchRequest setEntity:entity];
NSError *requestError = nil;
NSArray *result = [_context executeFetchRequest:fetchRequest error:&requestError];
[fetchRequest release], fetchRequest = nil;
return result;
}
我需要在其他地方使用结果,在这个方法中,结果是否正确返回(没有保留或自动释放)?此外,它的来电者在获得结果,保留或直接使用它时应该怎么做?
谢谢!
答案 0 :(得分:1)
惯例是,除了包含new
,alloc
或copy
的方法以外的方法返回的对象,您不负责任。您给出的数组几乎肯定已经自动释放,因此它将在您的代码完成后释放并返回到运行循环。如果你需要保持超出该点的数组(例如,如果你想保留这些结果并引用它们来响应未来的UI事件)那么你应该保留数组,最好是将它分配给一个保留的属性。 / p>
我强烈建议您完整阅读memory management programming guide,或者至少在前几节中了解您所询问的内容。