我正在建立对面向对象编程范围的理解,特别是Objective-C。我理解静态变量是在定义它们的类中的多个方法中使用时不会丢失它们的值的变量。 属性是否以相同的方式运行?我知道属性会回到它的子类中每个类实例的初始值。但是,他们确实在整个班级保留了价值(通过各种方法预设或修改),对吗?
*静态变量是否仅在定义它们的类中的多个方法中保留它们的值,或者它们是否在贯穿各个子类定义它们的类的所有实例中保留它们的值?如果是这样,那么我可以看到为什么属性不会被视为具有静态行为。但如果没有,那么属性可以被认为是静态的,对吗?
此外,静态变量是否与全局变量不同?
答案 0 :(得分:1)
Objective-C中的实例属性默认情况下由实例变量支持,因此它们的行为不像静态变量。您可以在实例上设置属性,并且在将其设置为不同的值之前,该值将保持不变。
但是,属性只是方法调用之上的特殊语法。你可以在一个方法中做什么没有限制,所以理论上你可以通过一个静态变量来“回”一个实例属性,编译器就可以正常使用它。但是,这样的安排是不可读的,所以我强烈建议不要使用它。