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的使用方法
- 在B中声明一个block
typealias TestBlock = (String)->()
- 持有一个block变量
var blo: TestBlock?
- 调用
self.blo?("It is block test")
- 在
A
中需要接受值的地方
let b = B()
b.blo = {str in
print("test block---\\(str)")
}
网友评论