这是我之前的asyncDetached 在 MainActor call 之后回到主线程的后续。
这是 iOS 视图控制器的完整代码:
import UIKit
func test1() {
print("test1", Thread.isMainThread) // true
Task {
print("test1 task", Thread.isMainThread) // false
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
test1()
test2()
}
func test2() {
print("test2", Thread.isMainThread) // true
Task {
print("test2 task", Thread.isMainThread) // true
}
}
}
Run Code Online (Sandbox Code Playgroud)
这两个函数test1和test2是相同的,并且是从同一位置调用的。然而,其中一个operation:在后台线程上运行其任务初始值设定项函数,另一个在主线程上运行。
是什么决定了这一点?我只能认为这与声明方法的位置有关。但这与声明方法的位置有什么关系呢?