Bildirim Gönderme ve Gözlemleme
Uygulama genelindeki olayları gönderin ve alın.
Bildirim Gönderme ve Gözlemleme, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
NotificationCenter
NotificationCenter bir yayın mekanizmasıdır: uygulamanın bir bölümü bir bildirim yayımlar ve herhangi sayıda gözlemci, gönderen ile alıcılar birbirini tanımadan tepki verir.
Varsayılan Merkez
Çoğu kod, bildirimleri süreç genelinde yönlendiren paylaşılan bir merkez olan NotificationCenter.default'ı kullanır.
import Foundation
let center = NotificationCenter.default
print("Using the default notification center")Bildirim Adı Tanımlama
Bildirimler bir Notification.Name ile tanımlanır. Bir sabit tanımlamak yazım hatalarını önler ve adı tek bir yerde toplar.
import Foundation
extension Notification.Name {
static let dataUpdated = Notification.Name("dataUpdated")
}
print("Defined a notification name")Bildirim Gönderme
post(name:object:) bildirimi yayınlar. object genellikle göndereni veya nil'i belirtir.
import Foundation
let center = NotificationCenter.default
let name = Notification.Name("ping")
center.post(name: name, object: nil)
print("Posted a notification")Gözlemci Ekleme (Kapanış)
Blok tabanlı addObserver(forName:object:queue:using:), bildirim her tetiklendiğinde bir kapanış çalıştırır ve bir token döndürür.
import Foundation
let center = NotificationCenter.default
let name = Notification.Name("ping")
let token = center.addObserver(forName: name, object: nil, queue: .main) { _ in
print("Observer fired")
}
center.post(name: name, object: nil)
_ = tokenSeçici Tabanlı Gözlemciler
Klasik API bir hedef ve #selector kullanır. Yöntem bir Notification bağımsız değişkeni alır.
import Foundation
class Watcher: NSObject {
func start() {
NotificationCenter.default.addObserver(
self, selector: #selector(handle(_:)),
name: Notification.Name("ping"), object: nil)
}
@objc func handle(_ n: Notification) { print("Handled") }
}
Watcher().start()Bildirimi Alma
Gözlemci kapanışı veya yöntemi, adını, nesnesini ve userInfo bilgisini taşıyan bir Notification değeri alır.
import Foundation
let center = NotificationCenter.default
let name = Notification.Name("event")
_ = center.addObserver(forName: name, object: nil, queue: nil) { note in
print("Got: \(note.name.rawValue)")
}
center.post(name: name, object: nil)Birden Çoğa Yayın
Birçok gözlemci aynı name için listen edebilir. Tek bir post hepsine bildirim gönderir.
import Foundation
let center = NotificationCenter.default
let name = Notification.Name("refresh")
_ = center.addObserver(forName: name, object: nil, queue: nil) { _ in print("A") }
_ = center.addObserver(forName: name, object: nil, queue: nil) { _ in print("B") }
center.post(name: name, object: nil)Nesneye Göre Filtreleme
addObserver öğesine nil olmayan bir object geçirmek, gözlemcinin yalnızca o gönderenden gelen post işlemlerinde çalışmasını sağlar.
import Foundation
let center = NotificationCenter.default
let sender = NSObject()
let name = Notification.Name("scoped")
_ = center.addObserver(forName: name, object: sender, queue: nil) { _ in
print("Only from sender")
}
center.post(name: name, object: sender)Sistem Bildirimleri
Sistem, klavye veya uygulama yaşam döngüsü olayları gibi birçok yerleşik bildirim post eder; bunları da aynı şekilde gözlemlersiniz.
import Foundation
// e.g. UIApplication.didEnterBackgroundNotification on iOS
let custom = Notification.Name("appReady")
_ = NotificationCenter.default.addObserver(forName: custom, object: nil, queue: nil) { _ in
print("App ready")
}Ne Zaman Kullanılmalı
NotificationCenter, gönderenin ve alıcıların birbirinden bağımsız kalması gereken genel, birden çoğa olaylar için uygundur. Sıkı bire bir bağlantılarda bir delegate çoğu zaman daha anlaşılırdır.
import Foundation
// Broadcast a global event many parts of the app care about.
let name = Notification.Name("userLoggedOut")
NotificationCenter.default.post(name: name, object: nil)
print("Broadcast logout")Kısa Kontrol
NotificationCenter.default.post(name:object:) ne yapar?
Özet
NotificationCenter.default, gönderenleri ve alıcıları birbirinden bağımsızlaştırır: bir Notification.Name tanımlar, bunu post edersiniz ve tepki vermek için kapanış veya seçiciyle addObserver kullanırsınız. Birden çoğa yayını ve nesne filtrelemeyi destekler. Sıradaki konu: userInfo içinde veri taşımak.
Sıkça Sorulan Sorular
“Bildirim Gönderme ve Gözlemleme” dersi ücretsiz mi?
Evet — “Bildirim Gönderme ve Gözlemleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“Bildirim Gönderme ve Gözlemleme” dersinde ne öğreneceğim?
Uygulama genelindeki olayları gönderin ve alın. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Bildirim Gönderme ve Gözlemleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Bildirim Gönderme ve Gözlemleme
- Bildirim userInfo Yükleri
- Gözlemcileri Güvenle Kaldırma
- Gözlemci Desenine Alternatifler