gpt4 book ai didi

objective-c - AFNetworking 会自动在后台线程上执行操作吗?

转载 作者:行者123 更新时间:2023-12-03 13:19:39 25 4
gpt4 key购买 nike

有谁知道 AFNetworking 的调用是否会自动分派(dispatch)到后台线程?

例如,这就是我所拥有的...

服务器访问层.m

- (void)fetchWithurlString:(NSString *)urlString andCompletion:(APIResponseObjectBlock)completion
{
[[WebClient sharedClient] fetchDictionaryWithURLString:urlString success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (completion) {
dispatch_async(dispatch_get_main_queue(), ^{
completion(YES, responseObject, operation.response.statusCode, nil, nil);
});
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error, NSInteger statusCode, id responseObject) {
if (completion) {
NSArray *messages = [self generateResponseArray:responseObject withDataType:MESSAGE];
NSArray *errors = [self generateResponseArray:responseObject withDataType:ERROR];
dispatch_async(dispatch_get_main_queue(), ^{
completion(NO, responseObject, statusCode, messages, errors);
});
}
}];
}

网络客户端.m
- (void)fetchDictionaryWithURLString:(NSString *)urlString success:(void (^)(AFHTTPRequestOperation *, id))success failure:(void (^)(AFHTTPRequestOperation *, NSError *, NSInteger, id))failure
{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
success(operation, responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
failure(operation, error, ((NSHTTPURLResponse *)operation.response).statusCode, operation.responseObject);
}];
}

在 ServerAccessLayer 中,我将完成代码分派(dispatch)回主线程。当我很久以前写这段代码的时候,出于某种原因,我的假设是当使用 AFHTTPRequestOperationManager 时,它会自动在后台线程上调度,所以我没有实现它。现在,我似乎无法找到任何证据,我想知道我是否实际上没有在后台线程上调用我的任何网络调用。

有人可以为我验证 AFHTTPRequestOperationManager 是否自动在后台线程上工作,还是我需要自己处理?

最佳答案

AFNetwork 是开源的,所以你实际上可以在 Github 上查看所有代码:https://github.com/AFNetworking/AFNetworking

AFHTTPRequestOperationManager ,您可以看到它在初始化时创建了自己的操作队列。所有网络请求都发生在这个操作队列上。然后,默认情况下,完成和失败 block 被分派(dispatch)回主队列。

简而言之,您的网络操作将在后台进行,但您的 successfailure block 将在主队列中。

关于objective-c - AFNetworking 会自动在后台线程上执行操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28929993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com