Ios Swift 3转换后的dispatch_get_main_queue()objc警告
我将我的目标C+Swift 2.x代码转换为Xcode 8中的Swift 3。在转换代码后,我得到了这些新的警告,我不知道它是否安全,我忽略/如何解决它 我的Swift 3代码:Ios Swift 3转换后的dispatch_get_main_queue()objc警告,ios,objective-c,swift3,grand-central-dispatch,Ios,Objective C,Swift3,Grand Central Dispatch,我将我的目标C+Swift 2.x代码转换为Xcode 8中的Swift 3。在转换代码后,我得到了这些新的警告,我不知道它是否安全,我忽略/如何解决它 我的Swift 3代码: func getUserNotificationFromServer(_ completionQueue:DispatchQueue = DispatchQueue.main,callback: @escaping (_ succeeded: Bool, _ response: AnyObject?) -> Vo
func getUserNotificationFromServer(_ completionQueue:DispatchQueue = DispatchQueue.main,callback: @escaping (_ succeeded: Bool, _ response: AnyObject?) -> Void) {
[wsManager getUserFavouritesFromServer:dispatch_get_main_queue() callback:^(BOOL succeeded, id _Nullable response) {
调用此函数的目标C代码
func getUserNotificationFromServer(_ completionQueue:DispatchQueue = DispatchQueue.main,callback: @escaping (_ succeeded: Bool, _ response: AnyObject?) -> Void) {
[wsManager getUserFavouritesFromServer:dispatch_get_main_queue() callback:^(BOOL succeeded, id _Nullable response) {
我收到的警告
发送“dispatch\u queue\u t\u Nonnull”(aka)的指针类型不兼容
“NSObject*”)转换为类型为的参数
'OS_调度_队列*\u非空'
有什么想法吗 我不明白为什么,但是
DispatchQueue
在生成的{ProjectModuleName}-Swift.h中被公开为OS\u dispatch\u queue*
(最好给苹果发封邮件。)
就我所测试的而言,按照消息中的建议进行强制转换会抑制警告,代码会按预期工作:
[wsManager getUserNotificationFromServer:(OS_dispatch_queue * _Nonnull)dispatch_get_main_queue()
callback:^(BOOL succeeded, id _Nullable response) {
查看这篇文章,这里的描述非常完美:这篇文章讨论了Swift代码,当我从我的Objective C类调用用Swift 3编写的方法时,会出现这个警告