通过向分隔器提供两个其他对象实例来实例化,一个称为'中介'对象,另一个称为'目标'对象。在分隔器上调用任何方法都将转发到中介对象,如果它实现了该方法,否则将转发到目标对象。您可以使用此功能,例如,将您的自定义UITableViewDelegate
类添加到现有的UITableViewController
设置中,在不弄乱(或干预)视图控制器的方法的情况下添加额外的委托功能。
在经典委托模式中,委托对象被视为其他对象的弱属性。这意味着您的应用程序需要在其他地方保留委托对象,以防止其提前释放,防止访问异常。但是,在有些情况下,您不希望被存储委托的事情所烦恼,这只会使您的应用代码变得混乱。循环委托保留器的创建就是为了这些场景。考虑一个UIAlertView
委托的场景。警报视图显示了您的消息并发送有关哪个按钮被点击的消息到其委托。如果你在委托方法中执行一些不依赖于您的视图控制器中其他代码的任意代码,您可以使用独立的委托对象设置一个CDR。委托由CDR保留,直到检测到并处理了警报视图按钮点击,之后您在CDR上调用breakRetainCycle
,这将从内存中清理CDR和您的委托对象。
要测试示例库项目;首先克隆仓库,然后从项目目录运行pod install
Eric-Paul Lecluse, [email protected]
EEEInterventions在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。