虽然 Swift 中闭包的功能非常强大, 但代理也不可替代, 各有各的好处, 合适的, 才是最好的!
个人总结, 代理的使用需要五个步骤:
- 1.设置代理协议,定义可选或者必选方法
- 2 声明一个delegate属性
- 3 过滤代理,实现代理方法
- 4 接收代理
- 5 实现代理方法
具体实现步骤如下:
设置代理控制器需要做的事
1 设置代理协议,定义可选或者必选方法
@objc protocol XMTestDelegate {
/// 定义可选方法
@objc optional func sendDataToBack(str: String)
/// 定义必选方法
func sendData2Back(str: String)
}
2 声明一个delegate属性,用可选项代替”weak”,防止循环引用
var delegate: XMTestDelegate?
3 过滤代理,实现代理方法
if delegate != nil {
delegate?.sendData2Back(str: "goodBye 2016")
delegate?.sendDataToBack!(str: "hello 2017")
}
接收代理控制器需要做的事
4 接收代理
testVC.delegate = self
5 实现代理方法
extension XMTestViewController: XMTestDelegate {
func sendDataToBack(str: String) {
print(str) // hello 2017
}
func sendData2Back(str: String) {
print(str) // goodBye 2016
}
}