dispatch_queue_t有什么区别! dispatch_queue_t?

What is the difference between dispatch_queue_t! and dispatch_queue_t?

headers 说 dispatch_get_global_queue returns global queueNULL.

 * @result
 * Returns the requested global queue or NULL if the requested global queue
 * does not exist.
 */
@available(OSX 10.6, *)
@warn_unused_result
public func dispatch_get_global_queue(identifier: Int, _ flags: UInt) -> dispatch_queue_t!

为什么 return 的值是 dispatch_queue_t! 而不是可选的 dispatch_queue_t?

dispatch_queue_t! 是可选的,但它是隐式解包的(使您不必在每次使用时都手动解包)。

当您在 Cocoa API 中看到隐式展开的可选值时,有时这只是意味着它们还没有审计特定的 API 的可空性。或者他们可能只是想让您不必自己手动打开可选的包装。或者这可能是 GCD 对象使用 non-standard 接口(它 returns ARC-compatible 对象但不使用通常的 Objective-C * 对象引用)的产物,所以也许 Swift 桥接不能优雅地处理它。