这是我的自定义视图:
class CustomVIew: UIView {
deinit {
print("custom view deinit")
}
var onTapViewHandler: (()->Void)?
}
Run Code Online (Sandbox Code Playgroud)
和视图控制器:
class ViewControllerB: UIViewController {
var customView: CustomVIew!
deinit {
print("B deinit")
}
override func viewDidLoad() {
super.viewDidLoad()
let customView = CustomVIew()
customView.onTapViewHandler = { [unowned self] in
self.didTapBlue()
}
customView.frame = CGRect(x: 50, y: 250, width: 200, height: 100)
customView.backgroundColor = UIColor.blueColor()
view.addSubview(customView)
self.customView = customView
}
func didTapBlue() {
}
}
Run Code Online (Sandbox Code Playgroud)
当控制器从导航堆栈中弹出时,一切都很好:
B deinit
custom view deinit
Run Code Online (Sandbox Code Playgroud)
但是当我替换这段代码时:
customView.onTapViewHandler = { [unowned self] …
Run Code Online (Sandbox Code Playgroud)