java - Objective c - 静态成员和常量

标签 java objective-c constants static-members

有什么区别:

@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/

相关文章:

java - 如何在我的 Eclipse Java 项目中导入 org.apache.commons.lang.time.StopWatch?

java - 如何自动化测试以检查 JSF 应用程序的正确性?

iphone - 将 post 变量发送到 iOS 表单

objective-c - 找不到拖动项目时播放的声音

objective-c - AVAudioUnit(渲染)回调

java - 为什么语言设计者允许界面包含字段?

java - 当我关闭应用程序...并打开通知...我单击 TestActicty 上的“返回”时,它会关闭应用程序并且不会返回主 Activity

c# - 如何在 C# 中创建一个 public const Size?

c++ - 编写 C++ 函数以对外部声明的数组进行操作

c++ - std::set 迭代器自动 const