由于我在model.xcdatamodeld中嵌入了fetch请求,我需要一个NSManagedObjectModel实例来从中获取fetch请求
NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
NSFetchRequest *fetchRequest = [managedObjectModel fetchRequestFromTemplateWithName:requestTemplateName
substitutionVariables:substitutionDictionary];
我的问题是关于managedObjectModel。我应该把它放在一处房产里重复使用吗?还是应该在需要时调用mergedModelFromBundles
我不知道调用"[NSManagedObjectModel mergedModelFromBundles:nil]"在内存/快速性方面的成本。名称"mergeModelFrom"让我觉得这隐藏了一些操作,如果对应用程序中的每个请求执行这些操作,可能会导致糟糕的性能。这是正确的吗?
苹果模板执行此
- (NSManagedObjectModel *)managedObjectModel
{
if (__managedObjectModel != nil) {
return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"DiscussIt" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return __managedObjectModel;
}
这样,只有在managedObjectModel
==nil
的情况下才能进行创建,这正是您想要的。
请注意,这是在getter中编写的,因此您不必担心记住实例化managedObjectModel
,因为当您实际尝试访问它时,它会被处理并延迟实例化。