在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 ]

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

并且#import这个头文件到您想要使用MAIN_MENU 的类

最新更新