作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在我的应用程序中,我有一个进行云调用的方法。它有一个完成处理程序。在某些时候,当用户向云发出此调用并在等待完成时,用户可能会点击注销。
这将从堆栈中删除 Controller ,因此完成 block 将返回到不再位于堆栈中的 Controller 。
这会导致崩溃,因为我在完成返回时执行了一些 UI 任务。我做了一个解决方法,我没有对 UI 做任何事情, Controller 不再位于堆栈中。
但是,我很好奇是否可以在注销时以某种方式取消/停止所有挂起的回调?
最佳答案
我不确定,但我认为某些东西是紧密耦合的。尝试做:
{ [weak self] () -> Void in
guard let _ = self else { return }
//rest of your code
}
如果你被取消初始化,那么你的 completioHanlder 将不会继续。
关于ios - 如何在 Swift3 中停止/取消回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44335335/
我是一名优秀的程序员,十分优秀!