制作可用于Objective C中所有类的全局可变变量

时间:2012-05-31 01:56:32

标签: objective-c

我正在开发一款需要不同类需要访问的变量的游戏。我想知道是否有办法用Objective C制作全局可变变量?

2 个答案:

答案 0 :(得分:2)

在Objective-C中创建全局可变变量没有问题。

在头文件中:

extern NSMutableArray *gMyArray;
extern NSMutableDictionary *gMyDictionary;

在您的应用程序委托源文件中:

NSMutableArray *gMyArray;
NSMutableDictionary *gMyDictionary;

在applicationDidFinishLaunching中:

gMyArray = [[NSMutableArray alloc] init];
gMyDictionary = [[NSMutableDictionary alloc] init];

然后只需#import您要访问全局的每个源文件中的头文件。

答案 1 :(得分:2)

通常的方法是提供一个单例类,它提供对所需变量的访问。而不是暴露由调用者直接变异的原始变量,你应该真正封装操作。拥有真正的全局变量会产生太多的耦合并且代码味道很差。

例如,单身人士可以写下这个:

[[NetworkTrafficStats instance] addNetworkTraffic:bytes_sent];

维护要好得多:

extern unsigned gTotalBytesSent;
//...
gTotalBytesSent += bytes_sent;

值得一读: