2013-12-07 3 views
0

В настоящее время я использую экземпляры singleton для доступа и поддержки различных NSObject в приложении. Например, у меня есть:Как поддерживать объекты между сеансами приложений?

  • VariableStores, которые поддерживают несколько объектов, таких как CurrentUser (пользовательские NSObject), lastLocation (CLLocation) и т.д.

  • TaskManager, содержащих NSMutableArray из NSOperations, которые потерпели неудачу для повторного выполнения позже (например, Instagram с неудачной загрузкой).

Если я убить приложение, одноэлементные экземпляры были уничтожены и: - некоторые данные должны быть получены на стороне сервера (например, CurrentUser), которые увеличивают продолжительность длины - некоторые данные наклоняют извлеченную из на стороне сервера, например NSOperation в TaskManager (поскольку они управляются только локально)

Таким образом, я хотел бы продолжить работу с такими объектами, даже если приложение полностью уничтожено.

Что следует считать хорошей практикой? Сериализовать объект в NSUserDefaults и десериализовать? Есть ли другие передовые методы?

В случае сериализации сериализуемые объекты в -applicationWillTerminate делегировать и десериализовать их в соответствующих методах -единения одиночных элементов (которые создаются в appDidFinishLaunching) можно считать приемлемыми?

ответ

1

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

то, что вам нужно сделать, это сохраняющееся данные ваше приложение ..

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

или вы можете использовать обычный plist или nsUserDefaults (мне не нравится этот параметр), но он немного медленный, если данных слишком много. вы можете сохранить эти данные, когда приложение перейдет на задний план или прекращено.

+0

Hi Mohamed, NSUserDefaults довольно медленный, но, как это только при запуске приложения, я думаю, что его можно терпеть. Я был с NSUserDefault и сериализовался для кодирования пользовательских объектов, и похоже, что он отлично работает на данный момент. Спасибо за отзыв :) –

+0

отлично не стесняйтесь продвигать мой ответ, если почувствовали, что это вам помогло :) –

Смежные вопросы