2

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 ********************* ****** ************************** メインスレッドに通知 ************** ************************

4

1 に答える 1