无法使用XCode 4.5覆盖属性getter

时间:2012-12-20 16:00:11

标签: objective-c ios xcode4.5

在使用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自动属性合成有关,但我不知道应该怎么做才能避免这个问题。有什么建议?

1 个答案:

答案 0 :(得分:12)

如果Clang没有任何生成方法,它将不会自动为您合成实例变量。在这种情况下,你已经要求readonly属性,所以没有setter,你提供了getter。您可以@synthesize managedObjectModel=_managedObjectModel或仅自己声明实例变量。