1

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

4

2 回答 2

2

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

在头文件中:

extern NSMutableArray *gMyArray;
extern NSMutableDictionary *gMyDictionary;

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

NSMutableArray *gMyArray;
NSMutableDictionary *gMyDictionary;

在 applicationDidFinishLaunching 中:

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

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

于 2012-05-31T03:01:02.933 回答
2

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

例如,单例可以让你这样写:

[[NetworkTrafficStats instance] addNetworkTraffic:bytes_sent];

这比维护要好得多:

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

值得一读:

于 2012-05-31T03:13:14.690 回答