我已经阅读了@synthesize并发现了有关此问题的一些非常有用的信息:What exactly does @synthesize do?和我了解实例变量和属性之间的区别,但是在继承的代码中,我的问题比那进一步了,我想在以下情况下知道它的作用(或是否必要)。如果需要更多代码上下文,请询问。

// example.h
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;

// example.m
@synthesize managedObjectContext = _managedObjectContext;

//... later on in example.m
- (NSManagedObjectContext *)managedObjectContext {
    if (_managedObjectContext != nil) {
        return _managedObjectContext;
    }

    _managedObjectContext = [[NSManagedObjectContext alloc] init];
    return _managedObjectContext;
}

因此,在链接的答案示例中,MapViewMapView1都在.h文件中定义,而在我的示例中,就我在进行全局搜索后所知,从未定义过指向_managedObjectContext的指针。我们将其与@synthesize关键字一起使用,并在实现文件中提供managedObjectContext的具体定义。

所以我的问题确实是2:
  • @synthesize在这里还做什么?
  • 当未像其他示例问题中那样定义_managedObjectContext时,为什么仍然编译?
  • 最佳答案

  • 不,因为您已为该属性提供了吸气剂。
  • 因为该属性提供了一个默认的支持实例变量_managedObjectContext

  • 注意:这几天都不需要@synthesize

    关于ios - 提供“实现”实现后,@ synthesize会做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36654814/

    10-09 04:03