Нужно ли использовать стандартный общий объект UserDefaults? - PullRequest
0 голосов
/ 26 февраля 2019

Как правило, при работе с UserDefaults мы используем объект standard.Однако при использовании стандарта UserDefaults следует устанавливать / получать значения, доступные из нового экземпляра, и наоборот.Чтобы уточнить:

let object = UserDefaults()
object.set(101, forKey: "number1") // setting via a new object
UserDefaults.standard.integer(forKey: "number1") // getting via standard
// 101

UserDefaults.standard.set(102, forKey: "number2") // setting via standard
object.value(forKey: "number2") // getting via the new object
// 102

Я бы предположил, что standard не существует как "синтаксический сахар", кажется, не имеет смысла создавать класс-одиночка только для этой цели.

Итак:

  • Есть ли польза от использования standard вместо UserDefaults()?Если есть, что это?Может ли это быть связано с наборами?
  • Если за этим что-то стоит, почему мы можем даже объявить UserDefaults()?

1 Ответ

0 голосов
/ 26 февраля 2019

Вызов UserDefaults() аналогичен вызову UserDefaults(suiteName: nil).

Вызов UserDefaults(suiteName: nil) возвращает объект, который ведет себя как UserDefaults.standard:

Если вы передадите nil этому параметру, система использует список поиска по умолчанию, который использует метод класса standard.

Таким образом, использование * не дает никаких преимуществ.1019 * вместо UserDefaults.standard.

Преимущество использования UserDefaults.standard вместо UserDefaults() состоит в том, что существует только один объект UserDefaults.standard, поэтому он может быть быстрее и использовать меньше памяти для использования UserDefaults.standard чем создать новый объект, вызвав UserDefaults().

...