Swift代理和闭包简单实现反向传值

一、代理实现方法:

委托方:

创建协议 、声明协议方法

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) ")
 }```

你可能感兴趣的:(Swift代理和闭包简单实现反向传值)