В ответ на ваш комментарий прилагается к вопросу:
Если у вас есть переменная экземпляра в Объекте X, любой другой объект, имеющий ссылку на X, может получить доступ к этой переменной обычным способом:
[objectX myClassAInstanceVariable];
// Or, if declared with @property
objectX.myClassAInstanceVariable;
Если другой объект не имеет ссылку на X, то он не может получить доступ к переменной, независимо от состояния или типа переменной. В этом случае вы можете переосмыслить свой дизайн или посмотреть мой последний абзац ниже о делегате приложения.
Понятие «статический» в Objective-C отличается от того, что вы могли ожидать (звучит так, будто вы пришли из опыта работы с Java).
Objective-C на самом деле не имеет понятия «переменные класса», хотя это довольно легко смоделировать; это описано в вопросе, с которым mathk связан: переменные уровня класса Objective-C . Вы объявляете переменную в заголовочном файле класса, которая является статической, так что она недоступна вне этого файла, и создаете для нее методы класса доступа.
Любой объект, имеющий ссылку на ваш контроллер представления, может отправлять ему сообщения. Обратите внимание, что в Objective-C переменные-члены по умолчанию «защищены», то есть доступ к этим переменным может иметь только экземпляр класса или подклассов, а не другие объекты. Другие объекты должны проходить через методы установки и получения.
Так же, как и другой вариант, поскольку фон вашего вопроса неясен, если у вас есть какая-то «глобальная переменная», которая на самом деле не специфична для вашего контроллера представления, лучшим местом для ее размещения может быть приложение делегировать *. Любой объект может получить ссылку на делегата в любое время:
[NSApp delegate];
NSApp
- это глобальная ссылка на объект NSApplication
, который является ядром вашей программы.
* Хотя, конечно, это можно переусердствовать.