Słyszałem o komunikacji w stylu Java pomiędzy komponentami bez konieczności wyraźnego wzajemnego rozpoznawania komponentów, czyli magistrali zdarzeń. Wydaje się, że za pomocą magistrali zdarzeń można komunikować się między różnymi klasami. łatwo z mniejszym potrzebnym kodowaniem. Wiem, że NSNotifications w iOS też to robią. NSNotification nie jest tutaj zamiennikiem. Proszę dać mi znać osobno od wzoru delegacji, co jest dobrym rozwiązaniem w iOS, które jest dobrym zamiennikiem EventBus do komunikacji między klasami.Ekwiwalent magistrali zdarzeń w systemie iOS
Odpowiedz
Z Swift można użyć SwiftEventBus. Jest to po prostu ładne wrapper around NSNotificationCenter i DispatchQueue.
Rejestracja na wydarzenie:
SwiftEventBus.onMainThread(target, name: "someEventName") { result in
// UI thread
// Do something when the event occurr
}
wyzwolić zdarzenie:
SwiftEventBus.post("someEventName")
A jeśli trzeba je dostosować The source code jest krótki, jasne i łatwy do Rozumiesz.
Hej, jestem twórcą biblioteki, cieszę się, że jesteście przydatni :) okrzyki – cesarferreira
Spójrz na tolo.
Funkcjonalność jest nieco podobna do magistrali zdarzeń i ma jedną dużą przewagę nad NSNotification, ponieważ nie musisz wyrejestrowywać się podczas dealokowania (jak w iOS9).
Chyba może użycie NSNotificationCenter
za to, czytałem komentarz o to jeden-do-wielu, i to prawda domyślnie, ale można określić, z którego przedmiotem chcesz otrzymywać wiadomości tak:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(someSelector:)
name:@"MyPersonalNotification"
object:someOtherObject];
Tutaj otrzymasz MyPersonalNotification
w someSelector:
tylko po opublikowaniu someOtherObject
. To sprawiło, że komunikacja była indywidualna.
Możesz także użyć Key-Value Observing API, ale osobiście uznałem, że jest to dość niewygodne.
- 1. magistrali zdarzeń w Fragment
- 2. Ekwiwalent segmentu iOS w systemie Android
- 3. Motywacja magistrali zdarzeń w GWT
- 4. Przewodnik po magistrali zdarzeń Akka
- 5. Równoległy ekwiwalent szuflady w iOS
- 6. Ekwiwalent Android addJavascriptInterface w iOS
- 7. ekwiwalent cURL w Swift - iOS
- 8. Zalety wstrzykiwania magistrali zdarzeń Otto zamiast używania statycznego singletonu
- 9. Wykrywanie zdarzeń połączeń w ios
- 10. Słuchanie zdarzeń w UIWebView (iOS)
- 11. Błąd magistrali w C struct
- 12. Odbiornik zdarzeń klawiaturowych w systemie Android
- 13. Ekwiwalent macierzy() w VB.NET?
- 14. Ekwiwalent tkaniny w Haskell?
- 15. Ekwiwalent ShellExecute w .NET
- 16. Słuchanie zdarzeń w reakcji na natywny ios
- 17. Prędkość magistrali usługi Azure
- 18. NSURLConnection działa idealnie w systemie iOS 4.3, ale nie w systemie iOS 5/iOS 6
- 19. Symbol rupii w systemie iOS
- 20. MKRoadWidthAtZoomScale w systemie iOS 6?
- 21. Stopka statyczna w systemie iOS
- 22. Dplyr podsumowuje ekwiwalent w pandach
- 23. Ekwiwalent WKWebView dla wag UIWebViewPageToFit
- 24. Statystyki magistrali usług Azure/Monitorowanie
- 25. Błąd magistrali BUG ruby 1.8.7
- 26. . Zalecenia dotyczące magistrali usług .net?
- 27. Funkcja iOS nie rozpoznaje zdarzeń kliknięcia.
- 28. UIButton nie wywołuje akcji w systemie iOS 5, ale działa w systemie iOS 6
- 29. Dlaczego zawartość paska nawigacji jest wyświetlana w systemie iOS 11, ale nie w systemie IOS 10?
- 30. Symulowanie zmian orientacji w systemie iOS do celów testowych
dlaczego tag "android"? –
Czy jesteś pewien, że NSNotificationCentre nie jest tym, czego szukasz? https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/index.html – Toby
Nie. NSNotificationCentre używa jednej do wielu komunikacji. Potrzebuję komunikacji jeden do jednego na raz. –