FSQMessageForwarder 1.0.1

FSQMessageForwarder 1.0.1

测试已测试
Lang语言 Obj-CObjective C
许可证 自定义
发布上次发布2015年11月

Brian DorfmanSam Grossberg 维护。



  • Brian Dorfman

这是一个消息转发类,在你无法访问发送对象源代码时使用。

概述

代理模式在许多 Obj-C 库(如 UIKit)中非常常见。然而,有时您可能想要让多个对象接收代理回调。FSQMessageForwarder 充当代理对象,将接收到的消息转发给其他对象。

注意:包含了一个测试项目,但它仅用于构建测试 - 当前未在此仓库中包含示例应用程序。

配置

您可以通过 Carthage(在 Cartfile 中添加 github "foursquare/FSQMessageForwarder")或 CocoaPods 包括 FSQMessageForwarder。或者,您可以直接手动将类的 h 和 m 文件复制到您的项目中。

使用消息转发器

包含两种不同的消息转发器。一种管理其对子对象的弱引用数组。另一种使用枚举来管理其子对象,这些子对象由设置的代理对象提供。

无论哪种方式,使用转发器都非常简单。只需实例化并保留您想要使用的转发器类型,并设置其子对象列表。通常,您将该转发器设置为其他类(例如UITableView)的委托。转发器将按照顺序将其不实现的消息转发给所有子对象。

符合 conformToProtocol:、respondsToSelector: 和 methodSignatureForSelector: 的调用将与预期一样工作(例如,如果任何子对象符合协议,则转发器符合该协议等)。

如果您自己正在编写发送对象,通常最好直接以支持多个委托的方式编写代码。FSQMessageForwarder 旨在为第三方类提供解决方案,您无法直接控制这些类(如 UIKit 中的类)。

返回值

如果转发的消息有返回值,第一个响应消息的子对象的返回值将被用作返回值。如果稍后的子对象希望使用其返回值而不是此返回值,则可以实现 messageForwarder:shouldUseResponseForInvocation: 以覆盖此行为。

贡献者

FSQMessageForwarder最初是由Foursquare Labs为内部使用开发的。它最初由Brian Dorfman(@bdorfman)编写,目前由他维护。