//创建一个导航栏控制器,控制器跳转跳转的controller内容如下---以下代码内容为循环引用
//创建一个属性
var completionCallBack:(()->())?
override func viewDidLoad()
{
super.viewDidLoad()
//在block中如果出现self. 需要注意
//循环引用,单方向是不会产生引用的
//只是闭包对slef执行了copy,闭包执行完成后会自动销毁,同时释放对self的引用
//如果要循环应用,在闭包的同时用self引用
LoadData {
print(self.view)
}
}
func LoadData(completion:() ->()) -> ()
{
//使用属性记录闭包 -> self对闭包引用了
completionCallBack = completion //如果不写此句则不会实现循环引用
//异步
DispatchQueue.global().async {
print("耗时操作")
DispatchQueue.main.async{
//回调 执行闭包
completion()
}
}
}
//类似OC的dealloc
deinit {
print("走了")
}