Junior
Bildirim Merkezi nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bildirim Merkezi veya NotificationCenter, Foundation içindeki bir mekanizmadır ve "Gözlemci" (Observer) desenini uygular. Nesnelerin, abone oldukları diğer nesnelere bildirimler yaymasını sağlar.
Ana bileşenler:
- Publisher (Yayıncı): Bildirimi yayınlayan nesne.
- Observer (Gözlemci): Bildirime abone olan ve ona yanıt veren nesne.
- Notification (Bildirim): Olayı temsil eden nesne. Bildirim adını, göndereni ve isteğe bağlı kullanıcı bilgisi sözlüğünü içerir.
Avantajlar:
- Nesneler arasında zayıf bağlılık.
- Birçok aboneye olay yaymak için uygun.
Dezavantajlar:
- Dolaylı etkileşim nedeniyle hata ayıklama karmaşası.
- Gözlemcilerin yaşam döngüsünün doğru yönetilmemesi durumunda potansiyel sorunlar.
Yayınlama ve abone olma örneği:
import Foundation
// Bildirim adı
extension Notification.Name {
static let myCustomNotification = Notification.Name("myCustomNotification")
}
// Yayıncı
class Publisher {
func publishNotification() {
let userInfo: [AnyHashable: Any] = ["data": "some important data"]
NotificationCenter.default.post(name: .myCustomNotification, object: self, userInfo: userInfo)
print("Bildirim yayınlandı")
}
}
// Gözlemci
class Observer {
init() {
// Bildirime abone olma
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification(_:)), name: .myCustomNotification, object: nil)
}
// Bildirimi aldığında çağrılan metod
@objc func handleNotification(_ notification: Notification) {
print("Bildirim alındı!")
if let userInfo = notification.userInfo {
print("Kullanıcı Bilgisi: \(userInfo)")
}
}
deinit {
// Deinitialization sırasında bildirimi iptal et
NotificationCenter.default.removeObserver(self)
}
}
// Kullanım
let publisher = Publisher()
let observer = Observer()
publisher.publishNotification()