【问题标题】:Difference in synthesize property in objective C [duplicate]目标C中合成属性的差异[重复]
【发布时间】:2013-03-26 10:08:26
【问题描述】:

.h 文件中的代码

@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;

.m 文件中的代码

@synthesize managedObjectContext = __managedObjectContext;

我是 Objective c 的初学者,我想知道@synthesize managedObjectContext; and @synthesize managedObjectContext = __managedObjectContext; 和有什么区别可以解释一下吗?

【问题讨论】:

  • 感谢这些链接,非常有用对不起,我没有早点看

标签: ios objective-c


【解决方案1】:

@synthesize propertyName 创建一个变量来支持与属性同名的属性,而@synthesize propertyName = variableName 为变量提供了一个替代名称(可能是属性名称以下划线为前缀)。

请注意,在最新版本的 Xcode 附带的编译器中,不再需要使用 @synthesize:编译器会找出需要综合的属性,然后隐式插入

@synthesize propertyName = _propertyName;

对于每个需要合成的属性。

【讨论】:

    【解决方案2】:

    如果你使用

    @synthesize managedObjectContext = __managedObjectContext;
    

    你可以这样写:

    __managedObjectContext = someContext;
    

    它将通过直接访问它来更改存储在此属性中的值,而不需要 setManagedObjectContext: 方法。

    然而,这一行是不正确的(除非你在它之前声明了一些其他的 managedObjectContext):

    managedObjectContext = someContext; //wrong
    self.managedObjectContext = someContext; //good
    

    附:顺便说一句,What exactly does @synthesize do?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      相关资源
      最近更新 更多