dispatch_get_main_queue() Swift 3 转换后的 objc 警告

dispatch_get_main_queue() objc warning after Swift 3 conversion

我将我的 Objective C + Swift 2.x 代码转换为 Swift 3 in Xcode 8. 转换代码后我收到这些新警告我不知道解决它是否安全 ignore/how。

我的Swift3代码:

func getUserNotificationFromServer(_ completionQueue:DispatchQueue = DispatchQueue.main,callback: @escaping (_ succeeded: Bool, _ response: AnyObject?) -> Void)  {

Objective C调用此函数的代码

 [wsManager getUserFavouritesFromServer:dispatch_get_main_queue() callback:^(BOOL succeeded, id  _Nullable response) {

我正在收到警告

Incompatible pointer types sending 'dispatch_queue_t _Nonnull' (aka 'NSObject *') to parameter of type 'OS_dispatch_queue * _Nonnull'

有什么想法吗?

我不明白为什么,但是 DispatchQueue 在生成的 {ProjectModuleName}-Swift.h 中暴露为 OS_dispatch_queue * .

(最好发送 bug report 给 Apple。)

据我测试,只要按照消息中的建议进行强制转换就会抑制警告,并且代码按预期工作:

[wsManager getUserNotificationFromServer:(OS_dispatch_queue * _Nonnull)dispatch_get_main_queue()
                                callback:^(BOOL succeeded, id  _Nullable response) {