如果我有以下代码:
func getData(completion: @escaping () -> ()) {
// Do stuff
completion()
print(hello)
}
当调用完成块时,函数会自动返回,还是会继续运行并且"你好"打印?
答案 0 :(得分:0)
完成处理程序就像任何其他普通的关闭一样。在某些情况下,人们可能希望在completion
之后运行更多代码,这就是为什么他们这样设计它们的原因。当你打电话给他们时,他们会跑。返回后,下面的代码运行。它们不能替换return
语句。如果要在completion()
位之后停止运行方法的其余部分,请在其中放置return
。
除非,否则您的完成处理程序将被声明为返回Never
,在这种情况下,它将终止您的整个应用程序,或无限期运行。在这种情况下,它之后的任何代码都不会运行。 :)