在 Xcode 9 / Swift 4 中使用 Google APIs Client Library for Objective-C for REST:为什么 service.executeQuery 在线程完成之前返回线程完成通知?我一直在尝试各种方法,但我坚持使用以下代码,在线程完成之前返回通知。请参阅下面的代码、实际输出和我希望看到的内容(线程完成后会发出通知)。我究竟做错了什么?谢谢
func myFunctionTest () {
let workItem = DispatchWorkItem {
self.service.executeQuery(query,
delegate: self,
didFinish: #selector(self.displayResultWithTicket2b(ticket:finishedWithObject:error:))
)
}
let group = DispatchGroup()
group.enter()
group.notify(queue: service.callbackQueue) {
print("************************** NOTIFY MAIN THREAD *************************************")
}
service.callbackQueue.async(group: group) {
workItem.perform()
}
group.leave()
}
@objc func displayResultWithTicket2b(ticket : GTLRServiceTicket,
finishedWithObject messagesResponse : GTLRGmail_ListMessagesResponse,
error : NSError?) {
//some code to run here
print("************************** 02.displayResultWithTicket2b ***************************")
}
输出
****************************** 通知主线程 ********************* ****************** ************************** 02.displayResultWithTicket2b ***** ************************
我所期望的 = 线程完成时会发出线程通知
****************************** 02.displayResultWithTicket2b ********************* ****** ****************************** 通知主线程 *************** ************************