我正在尝试创建可以从来自 Java 背景的任何类访问的变量我正在努力在 Objective-C 中理解这一点。
在 Java 中,我们有:
public static int MAIN_MENU = 1, SELECTION_SCREEN = 2;
这些可以在任何地方访问,如下所示:
ClassName.MAIN_MENU;
对于Objective-C,如何以最简单的形式将其保留在一个类中?
我正在尝试创建可以从来自 Java 背景的任何类访问的变量我正在努力在 Objective-C 中理解这一点。
在 Java 中,我们有:
public static int MAIN_MENU = 1, SELECTION_SCREEN = 2;
这些可以在任何地方访问,如下所示:
ClassName.MAIN_MENU;
对于Objective-C,如何以最简单的形式将其保留在一个类中?
在 Objective-C 中,类没有静态成员。我能想象的最好的方法是创建一个带有非常丑陋的全局变量的 getter 和 setter 类方法:
static T _member = initialValue;
+ (T)someStaticMember
{
return _member;
}
+ (void)setSomeStaticMember:(T)newVal
{
_member = newVal;
}
如果您只需要一个getter,即模拟只读成员,那么将静态变量移动到函数内,至少您会少一个全局变量。
但是:如果您只需要整数常量,为什么不使用enum
? 或者至少有一些宏?
如果您的目标是仅在自己的类中使用静态变量,您可以在.m
文件中声明变量,否则您必须使用#define
.
#define CONSTANT [ any value ]
#define MAIN_MENU 1
在头文件中使用。NSInteger const MAIN_MENU = 1;
在 m 文件和extern NSInteger const MAIN_MENU;
h 文件中使用。这个头文件是你#import
想要使用的类的 MAIN_MENU