Значения по умолчанию NSUser против делегата приложения для настроек приложения

В настоящее время настройки моего приложения хранятся в объекте под названием Settings. Каждая из моих настроек является атрибутом. У меня есть один объект настроек, который я загружаю в свой делегат приложения, и я получаю к нему доступ через делегат на протяжении всего проекта. Я думаю о переносе настроек на значения по умолчанию NSUser. Мне, вероятно, не понадобится пакет настроек, так как у меня все настроено в приложении. Помимо использования пакета настроек, мне было интересно, может ли кто-нибудь сказать мне, каковы преимущества использования NSUserDefaults по сравнению с моим текущим методом? Может ли мой выбор каким-либо образом повлиять/улучшить производительность приложения?


person SAHM    schedule 20.09.2011    source источник
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
comment
Привет, КокоаФу. Можете ли вы объяснить, что вы подразумеваете под архивированием? Программист-самоучка здесь. - person SAHM; 20.09.2011
comment
Архивирование — это сериализация экземпляра класса на диск, чтобы его можно было позже прочитать в памяти. Взгляните на протокол NSCoding и различные темы по архивированию в документации Apple. По сути, реализуя NSCoding, вы указываете, как каждая часть данных в классе должна записываться на диск и считываться с него. Тогда довольно легко сохранить ваши данные в файл. - person CIFilter; 20.09.2011
comment
Лукас Спасибо! @JPK Большинство из нас самоучки на iOS. Читать много. Также подумайте о том, чтобы проникнуть на курсы для выпускников, они не играют никакой роли и обычно проводятся ночью, я делал это несколько раз. - person zaph; 20.09.2011
comment
Спасибо, парни! Мне определенно есть чему поучиться, хотя кривая становится менее крутой. Похоже, я должен пока придерживаться своего объекта настроек, доступ к которому осуществляется через делегата приложения, так как нет большого преимущества использования NSUserDefaults с точки зрения производительности, и то, что у меня есть, работает для меня сейчас. В конце концов я хотел бы изменить его, когда я изучаю новые и лучшие (более чистые!) способы кодирования. Спасибо за ваш вклад. - person SAHM; 25.09.2011