Доступ к переменной из любого файла - PullRequest
0 голосов
/ 20 июля 2011

У меня есть проект target-c / xcode с несколькими заголовочными файлами и файлами реализации.Я хотел бы объявить переменную, которую я могу читать и изменять из любого файла, связанного с проектом.Я попытался сделать extern int val = 0; в заголовке, но это привело к ошибке компоновщика.

Буду признателен за любую помощь, спасибо.

Ответы [ 2 ]

1 голос
/ 20 июля 2011

Для хранения и доступа к приложению int in и iOS рекомендуется использовать NSUserDefaults.

.

Вы можете установить значение в любом месте приложения с помощью

NSUserDefaults *defaults = [NSUserDefaults  standardUserDefaults];
[defaults setInteger:anInt forKey:@"IntKey"];
[defaults synchronize];

Затем вы можете получить значение из любого места приложения с помощью

NSUserDefaults *defaults = [NSUserDefaults  standardUserDefaults];
int a = [defaults integerForKey:@"IntKey"];

Это также прекрасно работает для BOOL, float, NSString и NSArray. Ознакомьтесь с документацией NSUserDefaults для получения более подробной информации и примеров.

0 голосов
/ 20 июля 2011

Положите:

extern int val;

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

Помещенный

int val = 0;

вне области действия любой функции или метода, в одном файле .m или .c, включенном в вашу сборку. Не более.

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

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