Junior
Ce este centrul de notificări?
sobes.tech AI
Răspuns de la AI
Centul de notificări, sau NotificationCenter, este un mecanism în Foundation care implementează pattern-ul "Observator" (Observer). Permite obiectelor să difuzeze notificări în mod broadcast altor obiecte care sunt abonate la ele.
Componente cheie:
- Publisher (Emitent): Obiectul care publică notificarea.
- Observer (Observator): Obiectul care se abonează la notificare și răspunde la ea.
- Notification (Notificare): Obiect care reprezintă evenimentul în sine. Conține numele notificării, expeditorul și un dicționar opțional cu informații despre utilizator.
Avantaje:
- Cuplaj slab între obiecte.
- Convenabil pentru difuzarea evenimentelor către mulți abonați.
Dezavantaje:
- Complexitate în depanare din cauza interacțiunii indirecte.
- Probleme potențiale cu gestionarea ciclului de viață al observatorilor dacă nu sunt eliminați corect.
Exemplu de publicare și abonare:
import Foundation
// Numele notificării
extension Notification.Name {
static let myCustomNotification = Notification.Name("myCustomNotification")
}
// Emitent
class Publisher {
func publishNotification() {
let userInfo: [AnyHashable: Any] = ["data": "some important data"]
NotificationCenter.default.post(name: .myCustomNotification, object: self, userInfo: userInfo)
print("Notificare publicată")
}
}
// Observator
class Observer {
init() {
// Abonare la notificare
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification(_:)), name: .myCustomNotification, object: nil)
}
// Metodă apelată la primirea notificării
@objc func handleNotification(_ notification: Notification) {
print("Notificare primită!")
if let userInfo = notification.userInfo {
print("Informații utilizator: \(userInfo)")
}
}
deinit {
// Dezabonare de la notificare la dezalocare
NotificationCenter.default.removeObserver(self)
}
}
// Utilizare
let publisher = Publisher()
let observer = Observer()
publisher.publishNotification()