我想等到我的休息服务回电接受,但经过后执行dispatch_semaphore_wait(SEM,DISPATCH_TIME_FOREVER)永远不会收到回调
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
线,万物停下来,我从来没有收到回电。我的代码如下。
__block NSString *[email protected]"";
dispatch_semaphore_t sem;
sem = dispatch_semaphore_create(0);
[[manager2 dataTaskWithRequest:req completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
if (!error) {
NSLog(@"Reply JSON: %@", responseObject);
dictionary=[responseObject objectForKey:@"****"];
strTaggedText=[dictionary objectForKey:@"Text"];
NSLog(@"strText = %@",strTaggedText);
} else
{
NSLog(@"Error: %@, %@, %@", error, response, responseObject);
}
dispatch_semaphore_signal(sem);
}] resume];
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
return strTaggedText;
只是一个不使用信号量的方法,使用callback yourMethodWithCallbackHandler更改方法:^(NSString * strTaggedText){}字符串参数并调用API响应完成。不要用户返回值。:) – kaushal