簡體   English   中英

目標 C 方法不等待 Swift 方法的完成處理程序

[英]Objective C method not waiting for Swift method's completion handler

我正在從目標 C class 調用 Swift 方法。 它應該運行 Swift 代碼,等待它完成,然后才繼續到目標 C class 中的下一行。 現在它正在運行幾行 Swift 代碼,然后在完成處理程序被命中之前轉到完成處理程序之后的行。 當 Swift 代碼完成運行時,它會按原樣到達完成處理程序,但是我如何阻止它提前跳到完成處理程序之前呢?

Swift Class (TwitterRequest.swift)

@objc func startRequest(withUsername username: String, completion: @escaping (Bool) -> Void) {
        
        requestToken() { token in
            
            self.getUserTimeline(bearerToken: token, username: username) { timeline in
                // Get user twitter feed
                completion(true)
            }
        }
        
    }

從目標 C class 調用上述方法

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"showTwitterTimeline"]) {
    
        [[TwitterRequest new] startRequestWithUsername:_usernameTextField.text completion:^(BOOL completion) {

         // Completion handler for startRequest. 

        }];

         
         // Code is jumping here before above completion handler is hit. Why?
    }
}




func getUserTimeline(bearerToken: BearerToken, username: String, completion: (UserTimeline) -> Void) {

        var test = UserTimeline()
        
        completion(test)
}

這是完成處理程序的預期行為。 您的代碼繼續執行,但是當您的請求完成其工作時,將調用此請求的完成處理程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM