Учимся быстро и просто застряли с одной проблемой.Я пытаюсь использовать делегатов с сервисом singleton
.
С делегатом я хочу обновить несколько представлений, но из-за singleton
делегат реализации сохраняет последний UIView.
Так, например, у меня есть 3 UIViews с идентификаторами 1, 2, 3. Когда я сделаю в init
body self.myservice.delegate = self
и попытаюсь использовать конкретный метод делегата ex.myServiceDidUpdate
затем в этом методе делегата обращаются к self.viewId
, всегда возвращая last id
.
Я полагаю, это связано с реализацией сервиса singleton
и хотел попросить вас о помощи.
Примечание : мне нужна одноэлементная реализация для поддержания конкретной переменной в обслуживании
Вопрос :Можно ли сохранить 3 экземпляра моего сервиса, а также сохранить переменные в том сервисе, который мне нужен?Или как лучше всего справиться с этим
Код
class SimpleView: UIView, AudioServiceDelegate {
private var audioService = AudioService.shared
var viewId: String?
override init(frame: CGRect) {
super.init(frame: frame)
self.viewId = NSUUID().uuidString
self.audioService.delegate = self
}
func myServiceDidUpdate(identifier: String?) { <-- identifier coming from service i need to keep it across multiple views
print("SELF", self.viewId) <-- Keeps always last initialized ID
}
}
MyService
class AudioService {
static let shared = AudioService()
var delegate: AudioServiceDelegate?
var identifier: String?
...
@objc func didUpdate(_ notification: Notification) {
self.delegate?.myServiceDidUpdate(self.identifier)
}
}