【问题标题】:what's the difference from between these two way to create property in Objective-C [duplicate]这两种在Objective-C中创建属性的方式有什么区别[重复]
【发布时间】:2017-01-26 16:22:03
【问题描述】:
@interface DZActionView(){
    NSString* _name;
}

@interface DZActionView()
  @property(strong, nonatomic)NSString* name;
@end

有什么区别? 我只知道如果我使用@property;它生成 getter/setter 方法和一个 _name 属性。

【问题讨论】:

  • 第一个不是属性,它只是一个实例变量。第二个是属性。
  • 迟到了。但是谢谢兄弟。

标签: ios objective-c


【解决方案1】:

如果你是这个意思:

@interface DZActionView(){
    NSString* _name;
}

成为您创建属性的第一种方式,并且

@interface DZActionView()
    @property(strong, nonatomic)NSString* name;
@end

作为你的第二种方式,那么你误解了 Objective-C 如何使用属性。

第一个方法不是属性,它只是一个实例变量。它不能被其他对象访问。

第二种方式实际上确实创建了一个属性。在早期版本的 Objective-C 中,您需要为属性创建一个支持实例变量。这就是您包含的 _name 变量的用途。现在这主要是自动为您完成的,除非您执行需要显式添加的操作。

如果您包含自己的 gettersetter 方法(类似于这些):

- (NSString*)name {
    return _name;
}
- (void)setName:(NSString*)name {
    _name = name
}

然后这些明确引用您提到的_name 实例变量,并将其用作支持变量。

【讨论】:

  • 迟到了。但是谢谢兄弟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 2020-08-13
  • 2020-01-12
相关资源
最近更新 更多