0

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

在 Java 中,我们有:

public static int MAIN_MENU = 1, SELECTION_SCREEN = 2;

这些可以在任何地方访问,如下所示:

ClassName.MAIN_MENU;

对于Objective-C,如何以最简单的形式将其保留在一个类中?

4

3 回答 3

3

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

static T _member = initialValue;

+ (T)someStaticMember
{
    return _member;
}

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

如果您只需要一个getter,即模拟只读成员,那么将静态变量移动到函数内,至少您会少一个全局变量。


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

于 2013-07-18T06:22:13.790 回答
0

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

#define CONSTANT [ any value ]

于 2013-07-18T06:23:14.720 回答
0
  1. 您应该#define MAIN_MENU 1在头文件中使用。
  2. 您应该NSInteger const MAIN_MENU = 1;在 m 文件和extern NSInteger const MAIN_MENU;h 文件中使用。

这个头文件是你#import想要使用的类的 MAIN_MENU

于 2013-07-18T06:23:44.877 回答