Как я могу сохранить глобальные переменные в разработке iOS? - PullRequest
6 голосов
/ 01 апреля 2012

У меня есть приложение для iOS с несколькими контроллерами, каждый со своими собственными файлами xib.

Как установить глобальную переменную с областью действия, охватывающей все контроллеры? Должен ли я использовать NSUserDefaults и получать данные для каждого просмотра каждый раз?

Ответы [ 3 ]

10 голосов
/ 01 апреля 2012

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

Поместите значения в ваш AppDelegate.

Если у вас есть только один или два общих ресурса.значений, AppDelegate - это простой способ размещения общего содержимого.

Доступ к AppDelegate можно получить с контроллеров следующим образом:

FooApp* appDelegate = (FooApp*)[[UIApplication sharedApplication] delegate];

Где FooApp - имя вашего приложения. Класс.

Создание одноэлементного класса.

Не допускается загрязнение вашего AppDelegate множеством общих значений, и / или если вы хотите, чтобы эти значения сохранялись от сеанса ксеанс, создание класса Singleton , который поддерживается NSUserDefaults, - это еще один способ обмена значениями между экземплярами.

7 голосов
/ 01 апреля 2012

NSUserDefaults для вещей, которые требуют настойчивости, то есть вы планируете хранить их между запусками приложения. Для временных переменных рассмотрите возможность использования единственного экземпляра , такого как класс MySingleton, показанный в этом ответе: https://stackoverflow.com/a/145164/108574.

Если у вас есть этот класс, поместите ваши временные переменные как property этого класса для удобства доступа. И когда вам нужно получить к нему доступ, просто позвоните [MySingleton sharedSingleton].variable.

Также проверьте здесь: http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html для получения дополнительной информации.

2 голосов
/ 01 апреля 2012

В зависимости от ваших точных потребностей вы можете узнать и использовать шаблон проектирования Singleton для создания своего рода объекта базы данных, который может совместно использоваться всеми представлениями.Читайте о iOS Singletons здесь .

Вот как я выполнил то, что вы ищете в моем приложении для iOS.

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