【发布时间】:2016-07-28 23:58:06
【问题描述】:
我正在使用 Restkit (0.20.3),编译到 iPhone 5s (8.4) 模拟器上。
所以我看到很多关于“cancelAllObjectRequestOperationsWithMethod”的帖子,以便取消请求。我目前有一个带有大型 JSON 包的请求,需要几秒钟才能映射到 CoreData。用户可以选择通过按钮手动取消请求。
如果我的理解是正确的,这个“cancelAllObjectRequestOperationsWithMethod”是否应该停止请求,即使它当前正在运行?如果没有,那么我的问题是如何去做。但是,如果这应该停止当前操作,那么根据日志,它似乎不起作用,因为我仍然看到很多用于映射相关 API 的打印语句。
这是我启动 API 的代码:
@try{
[[RKObjectManager sharedManager] getObjectsAtPath:path
parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {} failure:^(RKObjectRequestOperation *operation, NSError *error) {}
@catch(NSException *e) {
NSLog(@"%@", e);
}
这是我的取消代码,当用户按下按钮时:
NSLog(@"%@", [[RKObjectManager sharedManager] enqueuedObjectRequestOperationsWithMethod:RKRequestMethodAny matchingPathPattern:path]);
[[RKObjectManager sharedManager] cancelAllObjectRequestOperationsWithMethod:RKRequestMethodAny matchingPathPattern:path];
NSLog(@"%@", [[RKObjectManager sharedManager] enqueuedObjectRequestOperationsWithMethod:RKRequestMethodAny matchingPathPattern:path]);
第一个NSLog显示state: Executing, isCancelled=NO
第二个NSLog显示state: Executing, isCancelled=YES
所以我已成功取消它,但映射仍继续显示在我的日志中。是否有可能在那个时间点也停止它的执行?
【问题讨论】:
标签: ios objective-c iphone core-data restkit