【发布时间】:2016-01-04 15:08:16
【问题描述】:
我已经写了一个辅助结构来保存和加载东西到NSUserDefaults。
import UIKit
struct Database {
static let defaults = NSUserDefaults.standardUserDefaults()
static var myVariable: AnyObject?
static func save() {
defaults.setObject(myVariable, forKey: "myVariable")
}
static func load() {
if let myVariable = defaults.objectForKey("myVariable") {
self.myVariable = myVariable
}
}
static func clear() {
defaults.removeObjectForKey("myVariable")
}
}
现在我可以简单地使用Database.load() 从NSUSerDefaults 加载myVariable。
但是,使用此代码也可以实现相同的目标:
struct Database2 {
static var sharedInstance = Database()
let defaults = NSUserDefaults.standardUserDefaults()
var myVariable: AnyObject?
func save() {
defaults.setObject(myVariable, forKey: "myVariable")
}
func load() {
if let myVariable = defaults.objectForKey("myVariable") {
self.myVariable = myVariable
}
}
func clear() {
defaults.removeObjectForKey("myVariable")
}
}
现在我会使用Database2.sharedInstance.load()。
哪一个被认为是更好的做法,为什么? sharedInstance 有什么用,如果我可以使用 static 声明做任何我想做的事情?
【问题讨论】:
标签: ios swift singleton cocoa-design-patterns