2009-11-07 3 views
-1

У меня есть файл заголовка variable.h, где я объявляю всю свою глобальную переменную. Затем я добавляю этот заголовочный файл в свой wordgame.m. У меня есть несколько функций. Проблема в том, что когда я инициализирую некоторая глобальная (int) переменная в функции другая функция не получает инициализированное значение. Другая функция всегда отображала значение (= 100) для этой переменной. Даже если я не инициализирую их, они всегда отображают значение 100. Может кто-нибудь скажет мне в чем проблема??? Насколько я знаю, в Objective-C значении неинициализированного переменные по умолчанию является 0.So, почему мое глобальное значение переменной дисплей 100.Задача инициализации переменной Objective-c

+0

Post несколько примеров коды, где у вас возникли проблемы. –

+0

Вам нужно опубликовать некоторый код, но я скажу, что globals не гарантируется инициализация до 0. Экземпляры экземпляра после размещения объекта, но не глобальные. –

+0

Infact проблема инициализации возникает в моем I-телефоне, а не в симуляторе. Когда я запускаю код в своем i-телефоне, отображается следующее сообщение: : -
предупреждение: невозможно прочитать символы для ""/Users/riseuppromotions/Рабочий стол/модифицированная игра/wordmaking/build/Release-iphoneos "/wordmaking.app/wordmaking" (файл не найден). предупреждение: невозможно прочитать символы для «»/Users/riseuppromotions/Desktop/измененная игра/wordmaking/build/Release-iphoneos «/wordmaking.app/wordmaking» (файл не найден).
это причина ??? мой код слишком большой, чтобы отправить. Plz дайте мне некоторое объяснение об этом предупреждении и что делать. – russell

ответ

3

Если у вас есть все ваши Глобал в одном файл, variable.h, такие как

int global1, global2; 
char shortStr[32]; 

И #include или #import это в каждый из ваших файлов, тогда вы создаете уникальные глобальные переменные в каждом из этих файлов, независимо друг от друга и не связанные друг с другом.

Итак, если вы измените значение global1 в одном файле, wordgame.m, это будет только тот факт, что global1 был изменен, а не global1 в другом файле .m.

Лучший способ сделать это будет иметь, в вашем variable.h:

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

и наиболее соответствующий файл .m, у вас есть:

int global1; 

и в другом .m файл, вы будете иметь:

int global2; 
char shortStr[32]; 

Теперь, любой файл, который включил variable.h, будет иметь доступ к этим глобал и будет только один экземпляр этих глобалов, поэтому любое значение в этих глобальных переменных будет одинаковым для всех файлов.

Лучшего способа сделать это было бы не использовать глобал на всех, и использовании классы, одиночка и делегат ...

+0

Хотя моя проблема не из-за того, что описывается u (поскольку вся моя функция находится в одном файле .m), я узнал о важной вещи из вашего ответа, чего я не знал. Спасибо большое. – russell

Смежные вопросы