创建一个类
import UIKit
class HttpTools {
//闭包类型: (参数列表) -> (返回值类型)
func loadData(_ finishCallback : @escaping (_ jsonData : String) -> ()) {
//发送异步请求
DispatchQueue.global().async {
print("发送异步网络请求\(Thread.current)")
//回到主线程
DispatchQueue.main.sync {
print("回到主线程\(Thread.current)")
//回调参数
finishCallback("json数据")
}
}
}
}
对于闭包的使用
import UIKit
class ViewController: UIViewController {
var httpTools :HttpTools?
override func viewDidLoad() {
super.viewDidLoad()
httpTools = HttpTools()
// Do any additional setup after loading the view, typically from a nib.
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("-------")
/* self. 一般是可以省略的
1> 如果该昂发中有局部变量和成员属性有歧义(民称相同)
2> 在闭包中使用成员变量
*/
httpTools?.loadData({ (jsonData : String) in
print("在viewController这里是打印的数据\(jsonData)")
self.view.backgroundColor = UIColor.red
})
//尾随闭包的概念
//如果在函数中。闭包是最后一个参数,那么可以写成尾随闭包
httpTools?.loadData(){ (jsonData : String) in
}
//如果是唯一的参数,可一个将前面的()省略
httpTools?.loadData { (jsonData : String) in
}
}
deinit {
print("viewController -- deinit")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
网友评论