首页 > 解决方案 > 当 self 被释放时我应该调用完成处理程序吗

问题描述

我们可能都使用过下面的模式。这可能无关紧要,我只是好奇当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
    }
}

标签: swiftcompletionhandler

解决方案


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

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

因为结果已经在飞行中return就足够了


推荐阅读