闭包在Swift
中非常有用。闭包使用具有多样性,比如你可以将闭包赋值给一个变量,你也可以将闭包作为一个函数的参数,你甚至可以将闭包作为一个函数的返回值。它的强大之处可见一斑。
Swift中的闭包类似Objective-C
中的Block
。其实,如果你想在Swift中实现Objective-C里的Block
功能,你可以直接使用闭包来代替。Block
和闭包的区别只是语法的不同而已,而且闭包的可读性比较强。
闭包有三种形式:
- 全局函数是一个有名字但不会捕获任何值的闭包。
- 嵌套函数是一个有名字并可以捕获到其封闭函数域内的值的闭包。
- 闭包表达式是一个利用轻量级语法所写的,可以捕获其上下文中变量或常量值的匿名闭包。
view中
lazy var redPakcetButton: UIButton = {
let button = UIButton()
button.setImage(UIImage(named:"red_bag"), for: UIControlState.normal)
//指定函数
button.addTarget(self, action: #selector(redPacketAction), for: UIControlEvents.touchUpInside)
return button
}()
//闭包,放入函数中
var tellFoundNewsControllerBlock:(()->())?
//按钮所指向的函数,其中包含闭包
@objc func redPacketAction(){
tellFoundNewsControllerBlock?()
}
controller中var vView = FoundGuanFangDetailTableView()//闭包所在view
//view中的闭包
vView.tellFoundNewsControllerBlock = {
//点击事件要执行的代码
.........
}