AFNetworking 2.0取消特定任务

2024-04-18

我正在尝试 afnetworking 2.0,只是想弄清楚如何取消特定任务。 旧的方法是使用类似的东西

[self cancelAllHTTPOperationsWithMethod:@"POST" path:@"user/receipts"]

但我在 2.0 中没有看到这样的东西

我创建了一个子类AFHTTPSessionManager这使我可以访问待处理任务数组,并且可以直接取消它们,但我不知道如何从另一个任务中识别一个任务,因此我只能取消特定任务。 任务确实有一个任务标识符,但这似乎不是我需要的。

NSString *path = [NSString stringWithFormat:@"user/receipts"];
[self.requestSerializer setAuthorizationHeaderFieldWithUsername:[prefs valueForKey:@"uuid"] password:self.store.authToken];
[self GET:path parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
            completionBlock(responseObject);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            errorBlock(error);
        }];

现在,如果我只想取消此请求,我该如何处理?


您可以将任务存储在变量中,以便稍后访问它:

NSURLSessionDataTask* task = [self GET:path parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
            completionBlock(responseObject);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            errorBlock(error);
        }];

然后只需取消它[task cancel].

另一种方法是保存任务的任务 ID,然后向 URL 会话询问其任务并确定您要取消的任务:

// save task ID
_savedTaskID = task.taskIdentifier;

// cancel specific task
for (NSURLSessionDataTask* task in [self dataTasks]) {
    if (task.taskIdentifier == _savedTaskID) {
        [task cancel];
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AFNetworking 2.0取消特定任务 的相关文章

随机推荐