NZTrampoline
摘要
允许您将多个对象声明为代理。
简介
如果我们要有多个代理呢?NZTrampoline 允许您在支持链式操作的同时声明多个代理:
用例
假设我们想要开发 MyMagicScrollView,它是 UIScrollView 的一个子类,在用户与其交互时执行一些计算(例如拖动)。我们希望将 MyMagicScrollView 发布为一个独立的模块,并供其他开发者使用,所以它有点像是一个黑盒。
在 MyMagicScrollView 的实现中,我们将它的代理设置为 NZTrampoline 的一个对象。这个弹性床允许实现代理方法,并将它们都转发给另一个对象。
如何使用
首先,创建一个类来继承 NZTrampoline 以及期望的代理的泛型协议,比如 MyTrampoline
- 让 MyTrampoline 类遵守你用来继承 NZTrampoline 的相同协议
- 实现任何必要的代理方法,你可能需要做一些额外的开发来通过 Observables、Closures 等将方法执行报告给另一个对象。
注意 NZTrampoline 不会转发已实现的代理方法。你需要负责将拦截到的代理方法转发给代理对象。请参考下面的示例代码。
class MyTrampoline: NZTrampoline<UICollectionViewDelegate>, UICollectionViewDelegate {
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
if delegate != nil && delegate!.responds(to: #selector(scrollViewDidEndDecelerating(_:))) {
delegate!.scrollViewDidEndDecelerating?(scrollView)
}
print("MyTrampoline received scrollViewDidEndDecelerating")
}
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
if delegate != nil && delegate!.responds(to: #selector(scrollViewWillBeginDragging(_:))) {
delegate!.scrollViewWillBeginDragging?(scrollView)
}
print("MyTrampoline received scrollViewWillBeginDragging")
}
}
示例
要运行示例项目,首先克隆仓库,然后从 Example 目录运行pod install
。
需求
安装
NZTrampoline 通过 CocoaPods 提供分发。要安装它,只需将以下行添加到你的 Podfile 中
pod 'NZTrampoline'
作者
Hamidreza Vakilian, [email protected]
许可
NZTrampoline可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。