Objective-c变量初始化问题

时间:2009-11-07 08:28:06

标签: objective-c

我有一个头文件variable.h,其中我声明了我的全局变量。然后我添加这个头文件我的wordgame.m。我有 几个函数。问题是当我在函数中初始化一些全局(int)变量时,其他函数不会得到初始值。其他函数总是显示值(= 100) 对于这些变量。即使我没有初始化它们,它们总是显示值100.任何人都可以告诉我这是什么问题??? 据我所知,在objective-c中未初始化的变量默认值为0.这就是为什么我的全局变量显示值为100。

1 个答案:

答案 0 :(得分:3)

如果你把所有的全局变量都放在一个文件中,那么变量是

int global1, global2;
char shortStr[32];

并且#include#import将这个文件放入每个文件中,然后在每个文件中创建唯一的全局变量,彼此独立且无关。

因此,如果在一个文件wordgame.m中更改global1的值,那么它只会是已更改的global1,而不是另一个.m文件中的global1。

更好的方法是在变量h中使用

extern int global1, global2;
extern char shortStr[32];

并且在最相关的.m文件中,您有:

int global1;

并在另一个.m文件中,您将拥有:

int global2;
char shortStr[32];

现在,任何包含variable.h的文件都能够访问这些全局变量,并且只有这些全局变量的一个实例,因此这些全局变量中的任何值在所有文件中都是相同的。

更好的方法是根本不使用全局变量,并使用类,单例和委托......