objective-c - 多播委托(delegate) - 多个类从 iOS 中的 UI 控件接收通知

标签 objective-c ios delegates

我了解 UITextField 等 UI 控件通过其委托(delegate)通知客户端交互/事件,委托(delegate)被定义为支持所需协议(protocol)的类。

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

最佳答案

有一个 Cocoa 功能可以让您相对轻松地构建多播委托(delegate) - 它是 Message Forwarding系统内置于框架中。

创建一个覆盖 forwardInvocation: 的类,并返回对象的实例而不是委托(delegate)。这就是有时称为 “蹦床对象” 的东西。 forwardInvocation: 实现中的逻辑现在可以决定哪些“真实”对象应该接收消息,并将调用转发给其中的一个或多个对象。

作为对这个已接受答案的更新,我在这里创建了自己的多播委托(delegate)实现:

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

关于objective-c - 多播委托(delegate) - 多个类从 iOS 中的 UI 控件接收通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12349865/

相关文章:

c# - Dispatcher.BeginInvoke ,尝试使用 lambda 从文本 block 获取字符串集,但出现转换错误

ios - 为什么prepare for segue不能快速发送图像?

ios - 将 SQL 数据从 Annotation click 传递到新 View

ios - 在 objective-c 中隐藏键盘

ios - 如何在导航栏上设置常用的栏按钮项目

ios - HomeKit:检查权限

ios - 如何获取 UIBezierPath 的反向路径

swift - 在两个 *.swift 文件之间传递数据而不使用prepareForSegue

c# - 在最小起订量中提高委托(delegate)事件

iphone - 加载 UITableViewCell 时如何设置 UIActivityIndi​​catorView