小编Yan*_*iao的帖子

Swift保留循环说明

这是我的自定义视图:

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)

iphone ios swift swift2

9
推荐指数
2
解决办法
1760
查看次数

标签 统计

ios ×1

iphone ×1

swift ×1

swift2 ×1