我正在尝试创建可以从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
- 您应该在m文件中使用
NSInteger const MAIN_MENU = 1;
,在h文件中使用extern NSInteger const MAIN_MENU;
并且#import
这个头文件到您想要使用MAIN_MENU 的类