有什么区别?
task {
// ... //
}
Task {
// ... //
}
我偶然发现了它。
Task
当你想创建一个异步任务时,是正确的结构。但这样写task
不会导致语法错误。我知道 SwiftUI 任务修饰符。但在一般代码中写的目的是什么?
有什么区别?
task {
// ... //
}
Task {
// ... //
}
我偶然发现了它。
Task
当你想创建一个异步任务时,是正确的结构。但这样写task
不会导致语法错误。我知道 SwiftUI 任务修饰符。但在一般代码中写的目的是什么?
它确实会导致编译器错误。尝试将其写入全局函数中。
所以不可以,
task { }
不能在“通用代码”中使用。如果在结构声明中使用它,不会导致编译器错误
View
,例如在这种情况下,
task
是指task
修饰符。它与 相同self.task { }
。这将创建一个View
与 相同的self
,但添加了该任务,但由于这是在 中onAppear
,因此该视图将立即被丢弃,并且不会执行该任务。如果你把它放在
body
然而,然后这会导致无限递归。要计算的
body
,ContentView
我们需要找到的body
。self.task { }
为此,我们需要找到修饰符body
的task
。这涉及找到body
它正在修改的视图的,因此我们需要找到的body
(self
)ContentView
,并且这个过程无限持续,直到堆栈溢出。您可以将不带点的修饰符作为其他代码的一部分来编写,但我不确定它是否能很好地工作。
因此,
task
您拥有的与修饰符版本相同,并且需要返回您在函数内部View
真正应该使用的含义。请注意Task
这是一个愚蠢的例子,其中有一个在视图内部声明的函数,我们可以从中学到两件事,1)
task
闭包永远不会执行,只打印“Hello”2)我们可以在这里添加其他修饰符,但它们也没有用。