iOS开发(Swift)——代理

iOS开发交流群:301058503

一般的定义:(实际开发中这样定义不行)
protocol 代理名 {
//方法
}

protocol TopViewDelegate {
    func action()
}

然而在定义一个代理的实例时,为了防止引用循环,我们都要把这个实例定义成弱引用

weak var topViewDelegate: TopViewDelegate!

此时,就会报错
这时,需要在定义代理时加上@objc

@objc protocol TopViewDelegate {
    func action()
}

这样就可以把实例定义成弱引用了,而且加上@objc修饰,还可以把代理方法定义成可选的。如:

@objc protocol TopViewDelegate {
    @objc optional
    func action()
}

所以,实际开发就这样定义

@objc protocol TopViewDelegate {
    func action()
}

重要的事情说三遍
实际开发就这样定义

@objc protocol TopViewDelegate {
    func action()
}

实际开发就这样定义

@objc protocol TopViewDelegate {
    func action()
}

使用
定义实例

class TopView: UIView {
weak var topViewDelegate: TopViewDelegate!
}

在按钮事件里面

if topViewDelegate != nil {
    topViewDelegate.action!()
}

创建一个AViewContoller

扫描二维码关注公众号,回复: 1786981 查看本文章
class AViewContoller: UIViewController ,TopViewDelegate{//引入代理


}

创建TopView实例并设置代理

let top = TopView()
self.addSubview(top)
top.topViewDelegate = self
//MARK:-------TopViewDelegate
    func action() {

    }

猜你喜欢

转载自blog.csdn.net/liumude123/article/details/78412390