繁体   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