swift - 当 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
}
}
解决方案
由于self
被取消初始化,因此调用没有意义
completion(.error) // Should I call this???
因为结果已经在飞行中return
就足够了
推荐阅读
- module - 使用来自另一个项目的组件和模块 angular5
- powershell - Invoke-WebRequest Links 属性值以 about:// 开头
- windows-installer - WPF 应用程序在我启动时崩溃
- excel - 有没有其他方法可以解析带有不规则表格的 Excel 文件?
- javascript - 如何通过 jQuery 的 $.ajax() 函数在 php 中传递数据值?
- c++ - 从二进制文件加载列表后,我的代码似乎进入了无限循环
- azure - 如何从 Azure 策略调用 REST 函数
- android - 如何从 JSON 文件添加图像 URL
- .net - 指定的deps.json [path\App.Web.Site\App.Web.deps.json] 不存在
- arguments - 在 shell 脚本中激活 conda 环境时如何传递命令行参数