我想等到我的休息服務回電接受,但經過後執行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