在使用Xcode 4.5时,我遇到了一些旧示例代码的问题。
在我的代码中,我定义了以下属性
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
然后我有以下访问方法:
- (NSManagedObjectModel *)managedObjectModel {
if (_managedObjectModel != nil)
{
return _managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MyPrototype"
withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc]
initWithContentsOfURL:modelURL];
return _managedObjectModel;
}
问题是Xcode会抛出多个错误,因为它无法“看到”_managedObjectModel
。如果我将访问者的名称从managedObjectModel
更改为managedObjectModel2
,一切正常。我想这个问题与Xcode 4.5
自动属性合成有关,但我不知道应该怎么做才能避免这个问题。有什么建议?
答案 0 :(得分:12)
如果Clang没有任何生成方法,它将不会自动为您合成实例变量。在这种情况下,你已经要求readonly属性,所以没有setter,你提供了getter。您可以@synthesize managedObjectModel=_managedObjectModel
或仅自己声明实例变量。