欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Delegate--代理

程序员文章站 2022-07-04 11:08:11
...

Class ‘classa’ has no initializers
定义一个类的时候,有时候只想定义,不想初始化,可以加一个!,执行闭包语法。

第一步

//定义一个代理
protocol sayhelloDelegate {
    func sayHello(name: String)
}

第二步

class classa {
    var delegate : sayhelloDelegate?
    //设置一个接口,这个接口表示的是被委托人的类型
    var name = "邹云鹏"
    func play(){
        delegate!.sayHello(name: name)
    }
    //这个方法中的delegate就是上面的接口的,后面的方法是要执行的
}

定义一个委托方,也就是新建一个类,其中需要提供一个接口,让被委托方接入

第三步

class classB:sayhelloDelegate {
    var name = "liiy"
    func sayHello(name: String) {
        print("\(name)请\(self.name)帮他说hello")
    }
}

定义一个被委托方,也就是新建一个类,继承接口属性(一般都是定义的代理),然后定义实现具体的代理的方法

第四步

  var ca = classa()
    var cb = classB()
    ...
    ...
 ca.delegate = cb
        //B代理A去实现方法,通过接口进入这个代理,然后用
        ca.play()
        //执行

ca的代理属性,也就是接口让cb接入,代表委托cb执行这个方法
然后执行就行了