Junior
Mi az értesítési központ?
sobes.tech MI
Válasz az MI-től
Az értesítési központ, vagy NotificationCenter, egy mechanizmus a Foundation-ben, amely megvalósítja a "Megfigyelő" (Observer) mintát. Lehetővé teszi, hogy objektumok széles körben küldjenek értesítéseket más objektumoknak, amelyek feliratkoztak rájuk.
Fő komponensek:
- Publisher (Kiadó): Objektum, amely közzéteszi az értesítést.
- Observer (Megfigyelő): Objektum, amely feliratkozik az értesítésre és reagál rá.
- Notification (Értesítés): Objektum, amely maga az esemény. Tartalmazza az értesítés nevét, küldőjét és egy opcionális felhasználói információkat tartalmazó szótárat.
Előnyök:
- Gyenge kapcsolódás az objektumok között.
- Kényelmes események széles körű küldésére sok feliratkozónak.
Hátrányok:
- Bonyolult hibakeresés az indirekt kölcsönhatás miatt.
- Potenciális problémák az megfigyelők életciklusának kezelésében, ha nem törlik őket megfelelően.
Példa közzétételre és feliratkozásra:
import Foundation
// Értesítés neve
extension Notification.Name {
static let myCustomNotification = Notification.Name("myCustomNotification")
}
// Kiadó
class Publisher {
func publishNotification() {
let userInfo: [AnyHashable: Any] = ["data": "some important data"]
NotificationCenter.default.post(name: .myCustomNotification, object: self, userInfo: userInfo)
print("Értesítés közzétéve")
}
}
// Megfigyelő
class Observer {
init() {
// Feliratkozás az értesítésre
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification(_:)), name: .myCustomNotification, object: nil)
}
// Metódus, amit hívnak az értesítés fogadásakor
@objc func handleNotification(_ notification: Notification) {
print("Értesítés fogadva!")
if let userInfo = notification.userInfo {
print("Felhasználói információk: \(userInfo)")
}
}
deinit {
// Feliratkozás lemondása az értesítésről a deinitializáláskor
NotificationCenter.default.removeObserver(self)
}
}
// Használat
let publisher = Publisher()
let observer = Observer()
publisher.publishNotification()