gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 03:49:51 30 4
gpt4 key购买 nike

有什么区别:

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

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com