@synthesize在" get"实施提供?

时间:2016-04-15 18:51:40

标签: ios objective-c

我已经阅读了@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关键字一起使用,并在实现文件中提供@synthesize的具体定义。

所以我的问题实际上是2:

  1. _managedObjectContext在这里做什么了?
  2. 为什么在 Dim x, y As Int Dim rng As Range x = 1 ' For A y = 4 ' For D Set rng = Columns(Chr(64 + x) & ":" & Chr(64 + y)) 没有像其他示例问题那样定义时仍然可以编译?

2 个答案:

答案 0 :(得分:3)

  1. 不,因为您已为该物业提供 getter
  2. 因为该属性提供了一个名为_managedObjectContext的默认后备实例变量。
  3. 注意:这些日子不需要@synthesize

答案 1 :(得分:0)

在今天的框架中,您不需要@synthesizeProperty将由框架自动合成。