我有一个头文件variable.h,其中我声明了我的全局变量。然后我添加这个头文件我的wordgame.m。我有 几个函数。问题是当我在函数中初始化一些全局(int)变量时,其他函数不会得到初始值。其他函数总是显示值(= 100) 对于这些变量。即使我没有初始化它们,它们总是显示值100.任何人都可以告诉我这是什么问题??? 据我所知,在objective-c中未初始化的变量默认值为0.这就是为什么我的全局变量显示值为100。
答案 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的文件都能够访问这些全局变量,并且只有这些全局变量的一个实例,因此这些全局变量中的任何值在所有文件中都是相同的。
更好的方法是根本不使用全局变量,并使用类,单例和委托......