【问题标题】:Are Properties in Objective-C "Static"?Objective-C 中的属性是“静态的”吗?
【发布时间】:2015-01-20 00:16:12
【问题描述】:

我正在建立对面向对象编程范围的理解,特别是 Objective-C。我知道静态变量是在定义它们的类中的多个方法中使用时不会丢失其值的变量*。 属性的行为方式是否相同?我知道属性会在其子类中的每个类实例中返回其初始值。但是,它们确实在整个班级中保留了价值(预先设置或通过各种方法修改),对吗?

*静态变量是否只在定义它们的类的多个方法中使用时保留其值,还是在定义它们的类的所有实例中在各个子类中保留它们的值?如果是这样,那么我可以看到为什么属性不会被视为具有静态行为。但如果不是,那么属性可以被认为是静态的,对吗?

另外,静态变量与全局变量有什么不同吗?

【问题讨论】:

    标签: objective-c oop properties static scope


    【解决方案1】:

    Objective-C 中的实例属性默认由实例变量支持,因此它们的行为不像静态变量。您可以在实例上设置一个属性,并且该值将保持不变,直到您将其设置为不同的值。

    但是,属性只是方法调用之上的一种特殊语法。您可以在方法中执行的操作没有限制,因此理论上您可以通过静态变量“支持”实例属性,编译器会很好地接受它。然而,这样的安排是不可读的,所以我强烈建议不要使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-09
      • 2012-02-18
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 2012-03-09
      • 2018-05-01
      • 1970-01-01
      相关资源
      最近更新 更多