Block的基本学习
功能: 保存一段代码, 在需要的时候执行
- OC定义属性
@property (nonatomic, copy) void(^andersonBlock)();
Swift闭包
闭包的基本格式
{
(形参列表) ->(返回值)
in // 用于区分形参, 返回值和需要执行的代码
需要执行的代码
}闭包的几种格式
1> 将闭包通过实参传递给参数
2> 如果闭包是一个函数的最后一个参数, 那么闭包可以写在函数()后面
3> 如果函数只接受一个参数, 而且这个参数是闭包, 那么()可以省略闭包的简写
1> 如果闭包没有参数, 没有返回值, 那么 "() -> () in" 可以省略
闭包的返回值和参数
- 示例:
override fun viewDidLoad(){
super.viewDidLoad()
createScrollView ( { ( ) -> Int in
return 5
}){ (index) -> UIView in
let view = UIButton()
// 设置View的属性(标题, 文字颜色等信息)
return view
}
}
func createScrollView(buttonCount: ( ) -> Int, btnWithIndex:(index: Int) -> UIView){
// 代码块
// 一个函数, 传入2个闭包
}
闭包的循环引用问题:
- 使用weak关键字修饰
weak var weakSelf = self // 需要注意, 在闭包当中使用weakSelf必须用!修饰