我必须使用标准的共享 UserDefaults 对象吗?

Do I have to use standard shared UserDefaults object?

作为惯例,在处理UserDefaults, we use the standard对象的时候就可以了。但是,使用标准 UserDefaults 应该 set/get 可以从新实例访问的值,反之亦然。澄清一下:

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 不存在,因为 "syntactic sugar",为此目的创建一个单例 class 似乎并不明智。

所以:

Calling UserDefaults() is the same as calling UserDefaults(suiteName: nil).

Calling UserDefaults(suiteName: nil) returns an object that behaves like UserDefaults.standard:

If you pass nil to this parameter, the system uses the default search list that the standard class method uses.

所以用UserDefaults()代替UserDefaults.standard没有任何优势。

使用 UserDefaults.standard 而不是 UserDefaults() 的优点是只存在一个 UserDefaults.standard 对象,因此使用 [=13= 可能更快并且可能使用更少的内存] 而不是通过调用 UserDefaults().

创建一个新对象