【问题标题】:Why we need property outlet and variable in iOS?为什么我们需要 iOS 中的属性插座和变量?
【发布时间】:2013-07-15 13:47:51
【问题描述】:

通常我只在另一个类访问时才使用“属性”插座和变量。否则它在接口块中声明。但我看到有些是创建“属性”出口和变量,但他们不能在另一个类中访问这些。所以任何人都可以解释,如果我们不从另一个类访问某些出口或变量,为什么我们需要“属性”出口和变量?

【问题讨论】:

标签: iphone ios objective-c automatic-ref-counting


【解决方案1】:

如果您不需要从其他类访问插座,则无需将其设为属性。您可以在@implementation 中将其设为实例变量:

@implementation ViewController {
    IBOutlet UIView *someView;
}

...

有些人不喜欢使用普通的实例变量,而更喜欢总是使用属性,即使是私有数据也是如此。如果您不使用 ARC,则使用属性而不是原始实例变量特别有用,因为您可以依靠属性设置器来保留和释放它们的对象。如果您使用 ARC,这不是问题。

如果您想使用某个属性但不想在@interface 中声明该属性,您可以在.m 文件的顶部(@implementation 上方)放置一个类扩展名,然后把属性放在那里:

@interface ViewController () {

@property (nonatomic, strong) IBOutlet UIView *someview;

@end

@implementation ViewController

...

【讨论】:

    【解决方案2】:

    我想你是在问属性。属性用于方便您编写 getter 和 setter。

    为什么我们需要getter setter?有一个地方我们可以访问一个变量,以便将来如果我们需要添加一些规则,我们可以在不更改整个代码的情况下做到这一点。

    Why use getters and setters? 深入探讨了这个问题

    Outlets 供 interfacebuilder 访问属性。

    【讨论】:

      【解决方案3】:

      声明它们是为了在 NIB/XIB 编辑器(也称为 Interface Builder)中公开它们。

      这允许您将视图与 NIB 编辑器中的对象属性相关联,并且 XIB 解压缩器将在初始化时设置属性,以便您可以在初始化后轻松地从类中引用这些实例。

      【讨论】:

      • 或者,在旧情况下,自动处理内存语义。
      • 我想他是在问 iVar 和 properties 之间的区别
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      相关资源
      最近更新 更多