方法字段
定义方法类型
typealias Fn = (Int) -> Int
字段
var fn: Fn?
实现
func fn2(num1: Int) -> Int {
return num1
}
self.fn = fn2(num1:)
调用
if let fn1 = self.fn {
print(fn1(10))
}
个人理解闭包
理解的闭包
- 目的: 回调数据
- 几个角色:函数、实现函数、调用函数
- 定义函数
callBack(Any response)
- 调用函数:所有网络请求都是异步的,请求结束后。需要把刷新UI 总不能把UI刷新都放在网络请求中吧 。所以需要把数据带出去。所以类似调用函数
callBack(response);
这里不管实现的,因为你可能刷新UI 你也可能加工数据对吧。所以我不管 - 实现函数:数据带过来我自己做主就行
网络请求方法
函数字段
无参数
typealias voidBackFn = () -> Void
var callBackOnTapFn: voidBackFn?
callBackOnTapFn?()
iconsView.callBackOnTapFn = {
Log("点击事件回调")
}
调用的时候 三种方式
if callBackOnTapFn != nil {
callBackOnTapFn!()
}
if let callBack = callBackOnTapFn {
callBack()
}
// 推荐这个
callBackOnTapFn?()
实现的时候
iconsView.callBackOnTapFn = {
() -> () in
Log("点击事件回调")
}
iconsView.callBackOnTapFn = {
() -> Void in
Log("点击事件回调")
}
// 推荐
iconsView.callBackOnTapFn = {
Log("点击事件回调")
}
有参数
typealias indexBackFn = (_ index: Int) -> Void
var callBackShareTypeBlock: indexBackFn?
callBackShareTypeBlock?(2)
iconsView.callBackShareTypeBlock = {
index in
Log(index)
}
全乎一点的
iconsView.callBackShareTypeBlock = {
(index: Int) -> Void in
Log(index)
}
iconsView.callBackShareTypeBlock = {
(index: Int) in
Log(index)
}
iconsView.callBackShareTypeBlock = {
index in
Log(index)
}