ios - 这两种在 Objective-C 中创建属性的方式有什么区别

标签 ios objective-c

<分区>

@interface DZActionView(){
    NSString* _name;
}

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

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

最佳答案

如果你的意思是:

@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 实例变量,并将其用作支持变量。

关于ios - 这两种在 Objective-C 中创建属性的方式有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39565356/

上一篇:ios - AFNetworking 与 CLLocation 给出错误

下一篇:iOS 保留复制问题

相关文章:

ios - 以编程方式创建具有默认图标的导航项 IOS

ios - Swift 无法修复 UITableView 的导航栏

ios - 使用 ssl 的同步子类 NSURLConnection?

iphone - 在 Xcode 中以编程方式按下 UITabBar 按钮

ios - 带有 Parse 的 MVC 框架

iOS 8 和 Mac OS X 10.10 safari 远程调试

ios - 如何更改 UIActionSheet 中文本按钮的颜色?

ios - 快速自定义标注 View

objective-c - 将字符串与 NSTextField 的值连接会在 Objective-C 中产生奇数符号

objective-c - Cocoa NSOutlineView 取消选择之前的选择