Я программирую настольную игру. Есть пара экранов и множество функций. Мне часто нужно изменить какую-то переменную, например, «деньги» или «дерево».
Я добавил «didset», чтобы я мог обновить вид, отображающий сумму денег.
Я вижу два варианта для этого. Либо глобальная переменная
var money = 0 {didSet {NotificationCenter.default.post(name: NSNotification.Name(rawValue: "showMoney"), object: nil)}}
или синглтон
class resources {
static let shared = resources()
var money = 0 {didSet {NotificationCenter.default.post(name: NSNotification.Name(rawValue: "ResourcenAnzeigen"), object: nil)}}
private init() {}
}
Теперь я читаю, что синглтоны всегда предпочтительнее, чем глобальные. Но мне интересно, почему. В моем примере оба, кажется, делают то же самое. Разница лишь в том, что я должен написать
money += 1
или
resources.shared.money += 1
Первый выглядит проще.
И есть ли третий способ получше? Я прочитал, что можно передать необходимые переменные каждой функции или viewcontroller - но это выглядит для меня как лишний лишний код?