Swift Concurrency中Task创建方式:Task { ... }与Task.init{ ... }是否等同
两种Task实例化写法的作用对比
两种写法的作用完全一致,不存在任何功能或行为层面的差异,原因如下:
- Swift语言本身支持构造器调用的语法糖规则:当你直接使用类型名后跟包含参数的括号(包含尾随闭包写法)时,编译器会自动将其解析为调用该类型对应的
init构造器,二者的编译结果没有任何区别。 - 写法1
Task { ... }就是该语法糖的典型应用,底层执行逻辑和显式调用构造器的写法2Task.init { ... }完全相同。 - 该规则不区分运行上下文:不管是在非并发上下文还是并发上下文中调用,两种写法都会创建完全相同的Task实例,继承当前上下文的优先级、任务本地值等属性,执行传入闭包中的异步逻辑。
内容的提问来源于stack exchange,提问作者mskw
相关产品推荐
相关产品推荐

