自我释放后,我应该致电完成处理程序吗

时间:2018-07-27 22:37:54

标签: swift completionhandler

我们所有人都可能使用了以下模式。这可能没什么大不了,我只是很好奇,当self不再存在时,我仍然应该调用完成处理程序吗?

var uid: String

func asyncTask(completion: @escaping(Result)->()) {
    anotherAsyncTask() { [weak self] (result) in
        guard let uid = self?.uid else { 
            completion(.error) // Should I call this???
            return 
        }
        // consume result
    }
}

1 个答案:

答案 0 :(得分:1)

由于self已取消初始化,因此调用没有意义

completion(.error) // Should I call this???

这里return就足够了结果