Swift3.0 Delegate和Block的实现

Swift3.0 中代理的使用方法
一、声明协议
1.制定协议

protocol DelegateName:NSObjectProtocol {
    //设置协议方法
    func method()
}

盛京三四线


2.用weak定义代理

weak var delegate:DelegateName?

3.判断代理是否存在,让代理去执行方法

func clickButton() {
    //'?'代替了responsed
    delegate?.method()
}

注:不写NSObjectProtocol不会报错,但是写属性是无法写weak。在Swift中,制定协议需要遵守NSObjectProtocol协议,除了类可以遵守协议,结构体也可以遵守协议,在OC中我们制定协议,通常继承自NSObject,可以这样理解,所有继承自NSObject的对象都可以实现协议方法。

二、遵守协议
1.遵守协议

class ViewController:UIViewController,DelegateName { //遵守协议

2.设置代理为self

customView?.delegate = self

3.实现协议方法

func method() {
    print(#function)
}

Swift3.0 中Block的使用方法

  1. 在B中声明一个block
typealias TestBlock = (String)->()
  1. 持有一个block变量
  var blo: TestBlock?  
  1. 调用
  self.blo?("It is block test")
  1. A中需要接受值的地方
 let b = B()
 b.blo = {str in 
    print("test block---\\(str)")
 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,377评论 30 472
  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 10,057评论 0 12
  • “猪猪,别离开我,我不想失去你,别走,别走……”凯思被梦惊醒了,他拼命地喊着猪猪,梦里的场景让凯思恐惧、伤心、绝望...
    妤梦阅读 1,508评论 0 0