我正在开发一款需要不同类需要访问的变量的游戏。我想知道是否有办法用Objective C制作全局可变变量?
答案 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;
值得一读: