有什么区别:
@interface SomeClass : NSObject {
NSObject *something;
}
和
@interface SomeClass : NSObject {
}
NSObject *something;
?另外,Java 的 final 和 Objective C (C) 的 const 有什么区别?对于以下情况,我应该在哪里声明静态类成员: 1. 只有类需要它时 **2.** 其他类可以读取的属性在哪里?我已经知道#define,但这对对象不利,因为它每次都会创建新对象。谢谢!
最佳答案
前者是一个实例变量,为 SomeClass 的每个实例创建一个something
。它类似于 C 的
typedef struct {
NSObject *something;
} SomeClass;
后者声明了一个与 SomeClass 没有真正关联的全局变量。在 C 中,它等同于
NSObject *something;
在全局范围内定义。 Objective-C 并没有真正的类变量,因此使用了全局变量(有时会使用;应该使用具有 compilation unit 范围和静态 storage class 的变量)。
定义“类”变量的最简洁的方法是在实现文件中定义一个静态变量。这样,只有类方法可以访问它,并且可以避免污染全局命名空间。如果您希望它公开可用,请定义访问器。
正确销毁类变量可能很棘手。当应用程序退出时,内存将被回收,打开的文件将自动关闭,但其他资源可能不会得到很好的处理。
关于java - Objective c - 静态成员和常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1383754/