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执行这个方法
然后执行就行了
上一篇: 清远古龙峡门票多少钱
下一篇: 排序算法