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() {
}