我有一个while循环来检查条件但是内部的块永远不会完成所以它是一个无限循环。这是我的代码
__block BOOL doContinue = YES;
while (doContinue) {
[NetworkHandle withParam:param url:url complete:^(id result, BOOL error)
{
if(...)
doContinue = NO;
} okHandler: ^{} retryHandler:^{} ];
}
但是从未调用完整的块,因此while循环继续运行。 我尝试了这个帖子中的每个答案:Wait for async task to finish completion block before returning in app delegate 但他们没有用。
我目前的方法让app永远等待
__block BOOL doContinue = YES;
while (doContinue) {
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
[NetworkHandle withParam:param url:url complete:^(id result, BOOL error)
{
if(...)
doContinue = NO;
dispatch_semaphore_signal(sema);
} okHandler: ^{} retryHandler:^{} ];
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release(sema);
}