Junior
Bildiriş mərkəzi nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Bildirişlər mərkəzi və ya NotificationCenter, Foundation-də mövcud olan mexanizmdir və "Müşahidəçi" (Observer) nümunəsini həyata keçirir. Bu, obyektlərin digər obyektlərə geniş yayılmasını təmin edir, onlar isə ona abunə olurlar.
Əsas komponentlər:
- Publisher (Yayımçı): Bildirişi yayımlayan obyekt.
- Observer (Müşahidəçi): Bildirişə abunə olan və ona cavab verən obyekt.
- Notification (Bildiriş): Hadisəni özündə əks etdirən obyekt. O, bildirişin adını, göndərənini və istifadəçi məlumatlarının opsional sözlüyünü ehtiva edir.
Üstünlüklər:
- Obyektlər arasında zəif əlaqə.
- Hadisələri çox sayda abunəçiyə yaymaq üçün əlverişli.
Çatışmazlıqlar:
- Dolaylı qarşılıqlı əlaqə səbəbindən səhvlərin tapılması çətinləşir.
- Əgər müşahidəçilər düzgün silinməzsə, onların həyat dövrünün idarə olunmasında potensial problemlər.
Yayım və abunəlik nümunəsi:
import Foundation
// Bildiriş adını genişləndirin
extension Notification.Name {
static let myCustomNotification = Notification.Name("myCustomNotification")
}
// Yayımçı
class Publisher {
func publishNotification() {
let userInfo: [AnyHashable: Any] = ["data": "some important data"]
NotificationCenter.default.post(name: .myCustomNotification, object: self, userInfo: userInfo)
print("Bildiriş yayımlandı")
}
}
// Müşahidəçi
class Observer {
init() {
// Bildirişə abunə olun
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification(_:)), name: .myCustomNotification, object: nil)
}
// Bildiriş alındıqda çağırılan metod
@objc func handleNotification(_ notification: Notification) {
print("Bildiriş alındı!")
if let userInfo = notification.userInfo {
print("İstifadəçi məlumatları: \(userInfo)")
}
}
deinit {
// Deinitializasiya zamanı abunəliyi ləğv edin
NotificationCenter.default.removeObserver(self)
}
}
// İstifadə
let publisher = Publisher()
let observer = Observer()
publisher.publishNotification()