代码之家  ›  专栏  ›  技术社区  ›  mk12

目标c-静态成员和常数

  •  5
  • mk12  · 技术社区  · 15 年前

    @interface SomeClass : NSObject {
        NSObject *something;
    }
    

    @interface SomeClass : NSObject {
    
    }
    NSObject *something;
    

    ? 另外,Java的 及目标C(C) 常数 ? 对于以下情况,我应该在哪里声明静态类成员: 1.

    2 回复  |  直到 15 年前
        1
  •  7
  •   outis    15 年前

    前者是一个实例变量,创建一个 something 对于某个类的每个实例。它类似于C

    typedef struct {
        NSObject *something;
    } SomeClass;
    

    后者声明了一个与SomeClass没有实际关联的全局变量。在C中,它相当于

    NSObject *something;
    

    compilation unit 范围和静态 storage class 是什么应该使用)。

    正确销毁类变量可能很棘手。当应用程序退出时,内存将被回收,打开的文件将自动关闭,但其他资源可能无法得到很好的处理。

        2
  •  2
  •   aperkins    15 年前

    至于“最终vs const”问题,两者都是相似的。它们声明该值不能更改。请注意,在Java中,由于所有值(除了原语)都是指针,因此它指向的对象可能会在下面发生更改,但内存位置(指针)永远不会更改。我相信在Objective C中也会出现类似的行为,不允许可变元素为“final”或“const”始终是一个好主意,因为对象中的值仍然可以修改。