Listenable
Swift object that provides an observable platform for multiple listeners.
Requirements
- iOS 9.0+
 - Xcode 9.x+
 - Swift 4
 
Installation
Listenable is available through CocoaPods. To install it, simply add the following line to your Podfile:
    pod 'Listenable' 
And run pod install.
Usage
Create a Listenable object either by inheriting or initializing a Listenable typed with a protocol:
    class ListenableObject: Listenable<ListenableDelegate> {
      // Class
    } 
You can then add and remove listeners, and update them as required...
Add Listener(s):
	add(listener: Listener, priority: ListenerPriority) -> Bool
	add(listeners: [Listener], priority: ListenerPriority) -> Void 
Remove Listener(s):
	remove(listener: Listener) -> Bool
	remove(listeners: [Listener]) -> Void
	removeAllListeners() 
Enumerate & Update Listeners:
	updateListeners(update: (listener: Listener, index: Int) -> Void) 
Prioritisation
ListenerPriority allows for definition of enumeration priority for a listener; by default the priority parameter is set to .low. The following values can be assigned:
	.low 		(Raw: 0)
	.high 		(Raw: 1000)
	.custom		(Valid range: 0-1000) 
Listeners can also be updated exclusively relative to their priority:
	updateListeners(withPriority: ListenerPriority?, 
				    	  update: (listener: Listener, index: Int) -> Void)
					   
	updateListeners(withPriorities: ClosedRange<Int>?, 
				    	    update: (listener: Listener, index: Int) -> Void) 
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/MerrickSapsford/Listenable.
License
The library is available as open source under the terms of the MIT License.