在Swift中是否可以使用lazy var中的回调?

时间:2018-01-27 20:45:06

标签: ios swift

lazy var headerView: WatchlistModifierHeaderView = {
    let view = WatchlistModifierHeaderView()

    view.translatesAutoresizingMaskIntoConstraints = false
    view.heightAnchor.constraint(equalToConstant: HEADER_VIEW_HEIGHT).isActive = true

    view.tapEventer.handler = { [unowned self] in
        print("HeaderView tapped")
    }

    return view
}()

这是一个例子。我喜欢这种风格,因为与视图有关的所有内容都在lazy var中捕获。但是,我很好奇这个变量是否因为回调而无法取消。

在一天结束时,我需要阅读内存,初始化和deinit。

1 个答案:

答案 0 :(得分:1)

这对我来说很好看。如果您实际上在回调中使用self,只要保留unowned或添加weak,就不会导致保留周期并且会正确退出。