美文网首页iOS开发精华专题iOS Developer
Swift3.0 Delegate和Block的实现

Swift3.0 Delegate和Block的实现

作者: Courage_SC | 来源:发表于2017-07-06 09:32 被阅读46次

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

    相关文章

      网友评论

        本文标题:Swift3.0 Delegate和Block的实现

        本文链接:https://www.haomeiwen.com/subject/zdachxtx.html