6

将一些旧示例代码与 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。如果我将访问器的名称从 更改managedObjectModelmanagedObjectModel2,一切正常。我猜这个问题与Xcode 4.5自动属性合成有关,但我不知道我应该怎么做才能避免这个问题。有什么建议么?

4

1 回答 1

12

如果 Clang 没有任何方法可以生成,它不会自动为您合成实例变量。在这种情况下,您请求了一个只读属性,因此没有 setter,而您提供了 getter。您可以@synthesize managedObjectModel=_managedObjectModel自己声明实例变量。

于 2012-12-20T16:02:35.127 回答