Notification Center
Nesneler
arası iletişim için kullanılabilecek yöntemlerden biri NotificationCenter’dır.
Bu yapıda siz bir veriyi post ettiğiniz zaman register olmuş tüm nesnelerin bu
veriyi alması ve tetiklenmesi sağlanır.
AViewController.swift (Tetikleyen)
BViewController.swift (Tetiklenen)
NotificationCenter Döngüsü
Burada önemli olan nokta addObserver diyerek register
olduğunuz notification siz kaldırmadığınız sürece aktif kalacaktır. ViewController
nesnesi görüntülendiği zaman notification’ının eklenmesi ve bu ekran değiştiği
durumda da notification havuzundan çıkılması gerekmektedir. Bunu doğru
yönetmezsek başka bir ekrandaki ViewController içerisindeki method tetiklenecek
ve aslında gereksiz bir işlem gerçekleşecektir. Bunun için yukardaki
viewDidLoad içerisinde yapılan tanımlama aslında viewWillAppear içerisinde
yapılması ve viewWillDissapear olduğunda da notificationcenter’dan çıkarılması
gerekmektedir. Bunu aşağıdaki şekilde gerçekleştirebilirsiniz.
Fakat her durumda bu yapı doğru değildir. Siz ekrandan
çıkmış olsanız da Notification’ın aktif kalmasını isteceğiniz durumlarda söz
konusudur. Örneğin arka planda müzik çalınmasını sağlayan bir ekranınız var ise
ve müziği durdurmak için bir Notification’a sahipse siz ekrandan ayrılsanız
bile Notification’ın aktif kalması gerekmektedir ki başka ekranlardan müziğin
durdurulması sağlanabilsin. Yani notification’ı ne zaman ekleyeceğinizi ve ne durumda
kaldıracağınızı yapacağınız işe göre belirlemelisiniz. Bu şekilde ekranda
ayrılsak bile silinmemesi gereken bir notification var ise aşağıdaki şekilde
kodlayabiliriz.
Göreceğiniz gibi bu durumda viewDidLoad içerisinde
Notification’ı ekleyip, deinit olduğu durumda da remove etmek yeterli olacaktır.
Size ait bir notification’ı herhangi bir başka ekrandan
aşağıdaki şekilde tetikleyebilirsiniz. Bu işlem sonrasından register olmuş tüm
nesneler ve methodlar tetiklenecektir.
NotificationCenter.default.post(name:
stopPlayerNotification, object: nil)
Hiç yorum yok:
Yorum Gönder
Yorumunuz için teşekkür ederim.