Objective c 未调用AFN网络完成块?
我这里有一段代码,它基本上调用了我的servlet(它调用了),然后返回结果。但是,如果我在中添加了同步/阻塞部分(请参阅Objective c 未调用AFN网络完成块?,objective-c,ios8,afnetworking,objective-c-blocks,afnetworking-2,Objective C,Ios8,Afnetworking,Objective C Blocks,Afnetworking 2,我这里有一段代码,它基本上调用了我的servlet(它调用了),然后返回结果。但是,如果我在中添加了同步/阻塞部分(请参阅if(isSync)),则不会调用完成块,整个应用程序将挂在dispatch\u group\u wait中。如果这段代码有任何不同,则从主线程调用它 // ...More code here if(isSync) { dispatch_group_enter(group); } AFHTTPRequestOperation *op = [[AFHTTPRequ
if(isSync)
),则不会调用完成块,整个应用程序将挂在dispatch\u group\u wait
中。如果这段代码有任何不同,则从主线程调用它
// ...More code here
if(isSync)
{
dispatch_group_enter(group);
}
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:REQ];
op.responseSerializer = [AFJSONResponseSerializer serializer];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSDictionary *result = responseObject;
NSLog(@"JSON responseObject: %@ ", result);
if(isSync)
{
dispatch_group_leave(group);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", [error localizedDescription]);
if(isSync)
{
dispatch_group_leave(group);
}
}];
[op start];
if(isSync)
{
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
}
我遗漏了什么吗?我遇到了完全相同的问题,我花了一段时间才意识到操作在特定队列(默认队列)中运行块 也就是说,假设您在同一队列中运行代码,如果您使用
dispatch\u group\u wait
阻止/停止正在运行的代码,则成功和失败块将永远不会运行。要解决此问题,可以将完成队列和组添加到操作中,使操作在不同的队列中运行块。以下代码为swift,不确定是否与objective-c相同
operation.completionQueue = queue;
operation.completionGroup = postGroup;
这是一个愚蠢的错误,过了一段时间我才发现问题所在。我根本没有使用组异步