Objective-C中的类全局变量

时间:2013-07-18 06:16:49

标签: objective-c

我正在尝试创建可以从任何来自Java背景的类访问的变量我很难在Objective-C中理解这一点。

在Java中我们有:

public static int MAIN_MENU = 1, SELECTION_SCREEN = 2;

这些可以在任何地方访问:

ClassName.MAIN_MENU;

如何以最简单的形式为Objective-C实现同样的东西,让它保持在一个类中?

3 个答案:

答案 0 :(得分:3)

在Objective-C中,类没有静态成员。我能想象到的最好的方法是使用一个完全丑陋的全局变量创建一个getter和setter类方法:

static T _member = initialValue;

+ (T)someStaticMember
{
    return _member;
}

+ (void)setSomeStaticMember:(T)newVal
{
    _member = newVal;
}

如果你只需要一个吸气剂,我。即模拟一个只读成员,然后在函数内部移动静态变量,至少你会少一个全局那样。


BUT:如果您只需要整数常量,为什么不使用enum?或者至少是一些宏?

答案 1 :(得分:0)

如果您的目标是仅在自己的类中使用静态变量,则可以在.m文件中声明您的变量,否则您必须使用#define定义全局常量。

#define CONSTANT [ any value ]

答案 2 :(得分:0)

  1. 您应该在头文件中使用#define MAIN_MENU 1
  2. 你应该在m文件中使用NSInteger const MAIN_MENU = 1;,在h文件中使用extern NSInteger const MAIN_MENU;
  3. #import这个头文件要使用MAIN_MENU