我真的不明白如何处理异步请求。
我有这种方法
- (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
。如何?在哪里?为什么不让我去做呢?
修改方法:
- (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] 删除。
我来说两句