2015-06-18 28 views
8

Bileşenlerin birbirlerinden haberdar olmalarını gerektirmeden, bileşenler arasındaki java 'yayınla-abone' stil iletişimi hakkında bilgi edinin. Olay veri yolu kullanarak farklı sınıflar arasında iletişim kurabiliyoruz. Ihtiyaç duyulan daha az kodlama ile kolayca. iOS'ta NSNotifications'ın da bunu yaptığını biliyorum. NSNotification, burada bir yedek değildir.Lütfen formu temsilci modelini birbirinden ayıralım. IOS'ta iyi bir çözüm olan ve sınıflar arası iletişim için EventBus için iyi bir çözüm.iOS'ta Olay Veriyolu eşdeğeri

+0

Neden 'android' etiketi? –

+0

NSNotificationCentre'ın aradığınız şey olmadığından emin misiniz? https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/index.html – Toby

+0

Hayır. NSNotificationCentre bire çok iletişim kullanır. Bir seferde bire bir iletişime ihtiyacım var. –

cevap

7

Swift ile SwiftEventBus'u kullanabilirsiniz. sadece güzel wrapper around NSNotificationCenter ve DispatchQueue. Bir etkinliğe

Kayıt:

SwiftEventBus.onMainThread(target, name: "someEventName") { result in 
    // UI thread 
    // Do something when the event occurr 
} 

Tetik bir olay:

SwiftEventBus.post("someEventName") 

Ve bunu özelleştirmek gerekirse, source codekısa, net ve kolay etmektir anlama.

+8

Hey, ben kütüphanenin yaratıcısıyım, size yararlı bulduğunuz için teşekkür ederim :) şerefe – cesarferreira

0

tolo'a bakın.
İşlevsellik bir olay veriyoluna biraz benzer ve ayrılırken (iOS9'da olduğu gibi) kayıt dışı bırakmanız gerekmediğinden NSNotification üzerinde büyük bir avantajı vardır.

3

Bence sen o bire birçok olduğunu ve varsayılan olarak doğrudur ama böyle mesaj almak istiyoruz dan hangi nesne belirtebilir hakkında bunun için kullanım NSNotificationCenter, ben sizin yorumunuzu yapabilirsiniz:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(someSelector:) 
              name:@"MyPersonalNotification" 
              object:someOtherObject]; 

yalnızca gönderiminde MyPersonalNotification burada someSelector: alırsınız. Bu, iletişimi bire bir yaptı.

Ayrıca Key-Value Observing API'u da kullanabilirsiniz ama ben şahsen biraz rahatsız oldum.