Xcode 9/Swift 4 で Objective-C for REST の Google API クライアント ライブラリを使用する: スレッドが完了する前に 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 ********************* ****** ************************** メインスレッドに通知 ************** ************************