Allows publish-subscribe-style communication between components without requiring the components to explicitly be aware of each other
Features
simplifies the communication between components
decouples event senders and receivers
avoids complex and error-prone dependencies and life cycle issues
makes your code simpler
is fast
is tiny
Thread-safe
Installation
Cocoapods
pod 'SwiftEventBus', :tag => '5.1.0', :git => 'https://github.com/cesarferreira/SwiftEventBus.git'
Carthage
github "cesarferreira/SwiftEventBus" == 5.1.0
Versions
5.+ for swift 5
3.+ for swift 4.2
2.+ for swift 3
1.1.0 for swift 2.2
Usage
1 - Prepare subscribers
Subscribers implement event handling methods that will be called when an event is received.
SwiftEventBus.onMainThread(target, name: "someEventName") { result in
// UI thread
}
// or
SwiftEventBus.onBackgroundThread(target, name:"someEventName") { result in
// API Access
}
2 - Post events
Post an event from any part of your code. All subscribers matching the event type will receive it.
SwiftEventBus.onMainThread(target, name:"personFetchEvent") { result in
let person : Person = result.object as Person
println(person.name) // will output "john doe"
}
Posting events from the BackgroundThread to the MainThread
SwiftEventBus
Allows publish-subscribe-style communication between components without requiring the components to explicitly be aware of each other
Features
Installation
Cocoapods
Carthage
Versions
5.+
forswift 5
3.+
forswift 4.2
2.+
forswift 3
1.1.0
forswift 2.2
Usage
1 - Prepare subscribers
Subscribers implement event handling methods that will be called when an event is received.
2 - Post events
Post an event from any part of your code. All subscribers matching the event type will receive it.
–
Eventbus with parameters
Post event
Expecting parameters
Posting events from the BackgroundThread to the MainThread
Quoting the official Apple documentation:
Regarding this limitation, @nunogoncalves implemented the feature and provided a working example:
–
Unregistering
Remove all the observers from the target
Remove observers of the same name from the target