Junior
Kas ir paziņojumu centrs?
sobes.tech AI
Atbilde no AI
Paziņojumu centrs, vai NotificationCenter, ir mehānisms Foundation, kas īsteno Novērotāja (Observer) paraugu. Tas ļauj objektiem plaši izplatīt paziņojumus citiem objektiem, kuri ir tiem abonējuši.
Galvenās sastāvdaļas:
- Publicētājs (Publisher): Objekts, kas publicē paziņojumu.
- Novērotājs (Observer): Objekts, kas abonē paziņojumu un reaģē uz to.
- Paziņojums (Notification): Objekts, kas pārstāv notikumu. Satur paziņojuma nosaukumu, sūtītāju un izvēles lietotāja informācijas vārdnīcu.
Priekšrocības:
- Vāja saikne starp objektiem.
- Ērti izplatīt notikumus daudziem abonentiem.
Trūkumi:
- Grūti diagnosticēt, jo mijiedarbība ir netieša.
- Var rasties problēmas ar novērotāju dzīves cikla pārvaldību, ja tie netiek pareizi noņemti.
Piemērs publicēšanai un abonēšanai:
import Foundation
// Paziņojuma nosaukums
extension Notification.Name {
static let myCustomNotification = Notification.Name("myCustomNotification")
}
// Publicētājs
class Publisher {
func publishNotification() {
let userInfo: [AnyHashable: Any] = ["data": "būtiska informācija"]
NotificationCenter.default.post(name: .myCustomNotification, object: self, userInfo: userInfo)
print("Paziņojums publicēts")
}
}
// Novērotājs
class Observer {
init() {
// Pierakstīšanās uz paziņojumu
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification(_:)), name: .myCustomNotification, object: nil)
}
// Metode, kas izsaukta, saņemot paziņojumu
@objc func handleNotification(_ notification: Notification) {
print("Paziņojums saņemts!")
if let userInfo = notification.userInfo {
print("Lietotāja informācija: \(userInfo)")
}
}
deinit {
// Pieraksta noņemšana
NotificationCenter.default.removeObserver(self)
}
}
// Lietošana
let publisher = Publisher()
let observer = Observer()
publisher.publishNotification()