iPhone Глобальная переменная? - PullRequest
2 голосов
/ 30 августа 2010

Конечно, у меня есть два представления с собственными файлами .h и .m. Как я могу объявить bool (или любую другую переменную) в одном представлении и получить доступ к нему в другом представлении?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 30 августа 2010

Objective C - это расширенный набор простых ANSI C, поэтому вы будете создавать и использовать глобальные переменные точно так же, как в старомодном C.

В одном файле .m или .c укажите:

BOOL gMyGlobalBoolVar = NO;  // or YES, depending on whatever initial state is needed

Я мог бы поместить их в централизованный одноэлементный класс, такой как ваш файл appdelegate .m, или в отдельный файл .c, такой как myGlobals.c. Я обычно помещаю их после # import / includes, но перед любым определением класса, метода или функции, чтобы прояснить, что к ним можно получить доступ вне любого объекта или функции.

В файлах .h для всех классов, к которым вы хотите получить доступ к gMyGlobalBoolVar, укажите:

extern BOOL gMyGlobalBoolVar;

Тогда просто используйте их в любом месте класса:

if ( [ self dogHasFleas ] ) { 
  gMyGlobalBoolVar = YES; 
}

Использование глобальных переменных в настоящее время не является «политически корректным», но для быстрого кода, который вы никогда не будете пытаться публиковать, повторно использовать, расширять или искать грубые ошибки, они работают так же хорошо, как и почти на каждом компьютере язык программирования более 50 лет назад.

0 голосов
/ 30 августа 2010

Создать класс модели данных.Создайте его в делегате приложения и передайте его контроллерам представления.Используйте Key-Value Observing для отслеживания изменений модели в ваших контроллерах представления.Смотрите мой ответ здесь: Как мне отображать и вычислять числа из базы данных на iPhone?

«Почему я не должен использовать глобальные переменные? Это не повредит только один раз».Это плохая привычка.Исключение глобальных переменных облегчает чтение и повторное использование кода, расширение и отладку.

0 голосов
/ 30 августа 2010

Вы можете просто взять ссылку на представление, содержащее bool, и получить переменную, используя метод получения.

Если вам нужны переменные всего приложения, вы можете поместить их в AppDelegate, но я настоятельно рекомендую против этоготак как он тесно связан с классами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...