Я написал вспомогательную структуру для сохранения и загрузки файлов до 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()
для загрузки myVariable
из NSUSerDefaults
. Однако тот же достижимо с этим кодом:
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
?
Возможный дубликат [с помощью модели Objective-C/Swift Singleton, почему мы создаем общий экземпляр, а не просто используем методы класса?] (Http://stackoverflow.com/questions/24515662/with-the-objective -с-скор-синглтон-модель-почему-ду-мы-Create-A-Shared-экземпляра-а) –