Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 未调用AFN网络完成块?_Objective C_Ios8_Afnetworking_Objective C Blocks_Afnetworking 2 - Fatal编程技术网

Objective c 未调用AFN网络完成块?

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

我这里有一段代码,它基本上调用了我的servlet(它调用了),然后返回结果。但是,如果我在中添加了同步/阻塞部分(请参阅
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;

这是一个愚蠢的错误,过了一段时间我才发现问题所在。我根本没有使用组异步