//
// ViewController.swift
// 006-循环引用
//
// Created by 庄壮勇 on 2018/1/8.
// Copyright © 2018年 Personal. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
// 属性就是一个var
var completionCallBack: (()->())?
override func viewDidLoad() {
super . viewDidLoad ()
// block 中如果出现 self. 要特别小心!
// 循环'引用' 单方向的引用是不会产生循环引用
// 只是闭包对 self. 进行了copy, 闭包执行完成之后,会自动销毁,同时释放对 self 的引用
// - 同时需要self 对闭包引用
loadData {
print ( self . view )
}
}
func loadData(completion: @escaping ()->()) -> (){
// 使用属性记录闭包
completionCallBack = completion
// 异步
DispatchQueue . global (). async {
print ( "耗时操作" )
DispatchQueue . main . async {
completion()
}
}
}
// 类似于 OC 的 dealloc
deinit {
print ( "我去了" )
}
}
// ViewController.swift
// 006-循环引用
//
// Created by 庄壮勇 on 2018/1/8.
// Copyright © 2018年 Personal. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
// 属性就是一个var
var completionCallBack: (()->())?
override func viewDidLoad() {
super . viewDidLoad ()
// block 中如果出现 self. 要特别小心!
// 循环'引用' 单方向的引用是不会产生循环引用
// 只是闭包对 self. 进行了copy, 闭包执行完成之后,会自动销毁,同时释放对 self 的引用
// - 同时需要self 对闭包引用
loadData {
print ( self . view )
}
}
func loadData(completion: @escaping ()->()) -> (){
// 使用属性记录闭包
completionCallBack = completion
// 异步
DispatchQueue . global (). async {
print ( "耗时操作" )
DispatchQueue . main . async {
completion()
}
}
}
// 类似于 OC 的 dealloc
deinit {
print ( "我去了" )
}
}