目标C块无法返回

安德鲁·SB

我真的不明白如何处理异步请求。

我有这种方法

- (NSString *)getUserID:(void(^)(NSString *result))handler {
    __block NSMutableString *returner = [[NSMutableString alloc] init];
    [TClient downloadUserID:^(NSString *getIt){
        //NSLog(getIt);
        returner = [NSMutableString stringWithFormat:@"%@", getIt];
        handler(returner);
    }];
    return @"getIt, or what I just handled - returner";
}

我想回来getIt如何?在哪里?为什么不让我去做呢?

伊戈尔·马图什金(Igor Matyushkin)

修改方法:

- (void)getUserID:(void(^)(NSString *result))handler {
    [TClient downloadUserID:^(NSString *getIt){
        if(handler) {
            handler(getIt);
        }
    }];
}

由于存在异步网络请求,因此该方法无法返回结果。您应该在处理程序的块中处理结果。

[self getUserID:^(NSString *result) {
    NSLog(@"%@", result); // log user's ID
    someObject.userID = result; // and pass it to the other object
}];

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章