使用带有异步调用的代码的GCD是否安全

时间:2015-04-20 23:49:10

标签: ios objective-c asynchronous afnetworking grand-central-dispatch

我有一个应用程序为HTTP请求执行一些复杂的工作构建数据,目前请求本身(使用AFNetworking)也是将由dispatch_async包装的方法的一部分。重构事物是否更好,以便AFNetworking调用不被包裹?

// expensive set up code then...
AFHTTPRequestOperation *requestOperation =
            [manager HTTPRequestOperationWithRequest:request
                                             success:^(AFHTTPRequestOperation *operation, id responseObject) {
                                                 NSLog(@"response %@", responseObject);
                                                 success(responseObject);
                                             } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                                                 NSLog(@"error %@", error);
                                                failure(error);
                    }];

    requestOperation.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingMutableContainers];

    [[NSOperationQueue mainQueue] addOperation:requestOperation];
    return requestOperation;

1 个答案:

答案 0 :(得分:2)

你在哪个线程上调用它并不重要。 AFNetworking将在其自己的队列上创建请求操作,并调用主队列上的完成处理程序。