Глобальная переменная, доступ к которой может получить любой класс - PullRequest
0 голосов
/ 16 марта 2012

Я хотел бы создать глобальную переменную (в основном, флаг var), которая может быть изменена и доступна любому классу в Objective C? Любые примеры приветствуются.

Ответы [ 4 ]

2 голосов
/ 16 марта 2012

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

Ровно в одном файле .m за пределами какого-либо интерфейса класса, метода или области подпрограммы объявите или создайте экземпляр вашей глобальной переменной (и инициализируйте ее, если не хотите, чтобы она начиналась со значения мусора):

BOOL myGlobalFlag = NO;

Чтобы облегчить поиск этих глобальных переменных (вам может понадобиться их найти, поскольку считается, что использование глобальных переменных сопряжено с большим риском присутствия в определенных типах ошибок), поместите их в начало файла , только после любого необходимого включает. Или поместите все глобальные переменные в один центральный файл, который легко найти, например, «Делегат приложения», файл, содержащий main (), или файл, содержащий только все глобальные переменные, например, my_apps_globals.c, включенный в ваш проект.

По крайней мере в одном файле .h, принадлежащем к любому файлу класса, .m или .c, где вы хотите получить доступ к этой переменной, и вне какого-либо интерфейса класса или определения структуры, объявите эту переменную как внешне доступную:

extern BOOL myGlobalFlag;

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

-(void)dummyMethod {
  if (myGlobalFlag) NSLOG(@"the Flag is set!!!");
}
2 голосов
/ 16 марта 2012

Шаблон синглтона.

http://www.galloway.me.uk/tutorials/singleton-classes/

Всегда ссылайтесь на объект через сообщение «sharedManager», которое создаст новый объект или даст вам существующий.

1 голос
/ 16 марта 2012

Проверьте это. В вашем файле appname.pch импортируйте некоторый класс, скажем, делегат приложения, поскольку к нему легко получить доступ из приложения-одиночки. Добавьте туда скрипт типа

#define MY_APP_DELEGATE  (((MYAppDelegate *)[UIApplication sharedApplication].delegate))

и из любого класса используйте переменные-делегаты следующим образом:

int val1 = MY_APP_DELEGATE.myvar;
MY_APP_DELEGATE.myvar = 1;
1 голос
/ 16 марта 2012

Помните, что Objective-C имеет старый добрый "C", работающий под одеялом.Таким образом, вы можете создать глобальную переменную в Objective-C, как в C.

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