我注意到用于调度组的 Swift API 和 Objective-C API 之间存在差异。
The init() for DispatchGroup() https://developer.apple.com/documentation/dispatch/dispatchgroup/1452975-init返回一个非可选值。
但是 Objective-Cdispatch_group_create() https://developer.apple.com/documentation/dispatch/1452975-dispatch_group_create提到了一种可能性NULL
return:
返回值
新创建的组,或失败时为 NULL。
- 什么可能导致 Objective-C 函数失败?哪些幕后问题可能导致团队无法创建?
- 为什么 Swift 版本不是可选的,而 Objective-C 版本是可选的?如果创建可能因任何原因失败,为什么同样的原因不适用于 Swift?
在 Objective-C 中,任何对象引用都可以nil
,并且对对象初始值设定项的任何调用都必须应对以下可能性:nil
可能会被退回。
因此,在 Swift 中,理论上每个 Objective-C 对象都需要是一个可选对象——在 Swift 1 中确实如此:它们都是隐式解包的可选对象。但后来,Swift 中的每个 Objective-C 对象引用都被手工调整为normal可选还是普通的非可选,取决于它是否真的可以通过nil
or not.
好吧,你调用时得到的对象dispatch_group_create()
所以can理论上是nil
,事实上它永远不会。 Swift 风格的 DispatchQueue 代码的创建者知道这一点,因此 DispatchGroup 初始值设定项不可为 null。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)