В настоящее время настройки моего приложения хранятся в объекте под названием Settings. Каждая из моих настроек является атрибутом. У меня есть один объект настроек, который я загружаю в свой делегат приложения, и я получаю к нему доступ через делегат на протяжении всего проекта. Я думаю о переносе настроек на значения по умолчанию NSUser. Мне, вероятно, не понадобится пакет настроек, так как у меня все настроено в приложении. Помимо использования пакета настроек, мне было интересно, может ли кто-нибудь сказать мне, каковы преимущества использования NSUserDefaults по сравнению с моим текущим методом? Может ли мой выбор каким-либо образом повлиять/улучшить производительность приложения?
Значения по умолчанию NSUser против делегата приложения для настроек приложения
comment
Как ваш объект настроек сохраняет каждую настройку? Вы имеете в виду свойство вместо атрибута?
- person bryanmac   schedule 20.09.2011
comment
Я, возможно, не понимаю жаргона, извините. Я говорю «атрибут», так как я устанавливаю каждый из параметров как атрибут объекта в базовой модели данных, но я уверен, что имею в виду свойство. Я получаю доступ к свойствам объекта настроек следующим образом: [[[UIApplication sharedDelegate] settings].showBudgets
- person SAHM   schedule 20.09.2011
Ответы (1)
Если есть значительное количество элементов, которые нужно сохранить, то архивация или список, такой как у вас в настоящее время, может быть лучше.
Одним из преимуществ NSUserDefaults является то, что к определенным элементам можно получить доступ и сохранить их из любого метода по отдельности. NSUserDefaults также поддерживает несколько необъектных типов.
Обычно, если мне нужно сохранить практически большую часть состояния классов, я использую архивирование.
Нет причин не использовать комбинацию, выбирайте способ сохранения каждого элемента в отдельности.
Как правило, большой разницы в производительности не будет.
Для существенных данных выберите Core Data.
person
zaph
schedule
20.09.2011
Привет, КокоаФу. Можете ли вы объяснить, что вы подразумеваете под архивированием? Программист-самоучка здесь.
- person SAHM; 20.09.2011
Архивирование — это сериализация экземпляра класса на диск, чтобы его можно было позже прочитать в памяти. Взгляните на протокол
NSCoding
и различные темы по архивированию в документации Apple. По сути, реализуя NSCoding
, вы указываете, как каждая часть данных в классе должна записываться на диск и считываться с него. Тогда довольно легко сохранить ваши данные в файл.
- person CIFilter; 20.09.2011
Лукас Спасибо! @JPK Большинство из нас самоучки на iOS. Читать много. Также подумайте о том, чтобы проникнуть на курсы для выпускников, они не играют никакой роли и обычно проводятся ночью, я делал это несколько раз.
- person zaph; 20.09.2011
Спасибо, парни! Мне определенно есть чему поучиться, хотя кривая становится менее крутой. Похоже, я должен пока придерживаться своего объекта настроек, доступ к которому осуществляется через делегата приложения, так как нет большого преимущества использования NSUserDefaults с точки зрения производительности, и то, что у меня есть, работает для меня сейчас. В конце концов я хотел бы изменить его, когда я изучаю новые и лучшие (более чистые!) способы кодирования. Спасибо за ваш вклад.
- person SAHM; 25.09.2011