多播委托 - 从iOS中的UI控件接收通知的多个类

Col*_*inE 5 delegates objective-c ios

我理解UI控件(如UITextField)通过其委托来通知客户端交互/事件,委托被定义为支持所需协议的类.

我经常发现自己想要在多个类中接收UI事件的通知,因此希望支持多播.例如,为UI控件指定多个委托.我很确定没有iOS框架功能支持这一点.我想知道是否有人提出了解决这个问题的合适解决方案?

das*_*ght 6

有一个cocoa功能可以让你相对轻松地构建多播委托 - 它是框架中内置的Message Forwarding系统.

创建一个覆盖的类forwardInvocation:,并返回对象的实例而不是委托.这有时被称为"蹦床对象".实现中的逻辑forwardInvocation:现在可以决定哪些"真实"对象应该接收消息,并将调用转发给它们中的一个或多个.

作为对此接受的答案的更新,我在此处创建了自己的多播委托实现:

http://www.scottlogic.co.uk/blog/colin/2012/11/a-multicast-delegate-pattern-for-ios-controls/