This is code from a sample Swift Playground that shows how to do this. The Playground needs to have access to MPWFoundation, for example by being inside a Xcode workspace that includes it.
import Foundation
import MPWFoundation
@objc protocol ModelDidChange:MPWNotificationProtocol {
func modelDidChange( payload:NSNotification );
}
class MyView : NSObject,ModelDidChange {
override public init() {
super.init()
self.installProtocolNotifications()
}
func modelDidChange( payload:NSNotification ) {
print("I was notified, self: \(self) payload: \"\(payload.object!)\"")
}
}
let target1 = MyView()
let target2 = MyView()
sendProtocolNotification( ModelDidChange.self , "The Payload")
A brief walkthrough:
- We declare a
ModelDidChange
notification protocol. - We indicate that it is a notification protocol by adopting
MPWNotificationProtocol
. - The notification protocol has the message
modelDidChange
- We declare that
MyView
conforms toModelDidChange
. This means we declaratively indicate that we receive ModelDidChange notifications, which will result in MyView instance being sentmodelDidChange()
messages. - It also means that we have to implement
modelDidChange()
, which will be checked by the compiler. - We need to call
installProtocolNotifications()
in order to activate the declared relationships. - We use
sendProtocolNotification()
with the Protocol object as the argument and a payload. - The fact that we need a protocol object instead of any old String gives us additional checking.
No comments:
Post a Comment