Sobes.tech
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()