一、代理实现方法:
委托方:
创建协议 、声明协议方法
protocol DemoDelegateProtocal : NSObjectProtocol {
func delegateData(data:String)
}```
创建一个代理属性
var mDelegate: DemoDelegateProtocal?```
执行协议方法
self.mDelegate?.delegateData(data: "需要返回的值")```
#####代理方:
继承协议
class MainViewController : UIViewController, DemoDelegateProtocal```
将代理设为自己
delegateVC.mDelegate = self```
实现代理方法
func delegateData(data: String) {
print("(data)")
}```
我在实现代理方法的时候如下处理:
//Swift的扩展extension可以用来继承协议,实现代码隔离,便于维护
extension MainViewController: DemoDelegateProtocal{
//实现代理方法
func delegateData(data: String) {
print("\(data)")
}
}```
##二、闭包实现方法:
利用typealias为闭包类型定义别名
这里先介绍一下 typealias的使用 : typealias是Swift中用来为已经存在的类型重新定义名字的关键字(类似于OC语法中的 typedef),重新命名的新名字用来替代之前的类型,并且能够使代码变得更加清晰简单容易理解。typealias 的用法很简单,直接用 = 赋值就可以了:
typealias DataFromClosure = (String) -> Void```
声明
var mClosure : DataFromClosure?```
实现
if (self.mClosure != nil) {
self.mClosure!("需要传的值")
}```
调用
secondVC.mClosure = {
(data:String) -> Void in
print("需要的值 \(data) ")
}```
网友评论