按照惯例,在处理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()
?答案 0 :(得分:5)
Calling UserDefaults()
is the same as calling UserDefaults(suiteName: nil)
.
Calling UserDefaults(suiteName: nil)
returns an object that behaves like UserDefaults.standard
:
如果将
nil
传递给此参数,则系统将使用standard
类方法使用的默认搜索列表。
因此,使用UserDefaults()
代替UserDefaults.standard
没有任何优势。
使用UserDefaults.standard
代替UserDefaults()
的优点是仅存在一个UserDefaults.standard
对象,因此与使用UserDefaults.standard
相比,它可能更快,使用更少的内存。通过调用UserDefaults()
创建新对象。