【发布时间】:2014-04-28 13:05:37
【问题描述】:
我看到 RestKit 存在问题,未完成的远程请求将导致其他请求排队并阻塞,直到前一个请求完成。我已经读到 RestKit 将 AFNetworking 的 setMaxConcurrentOperationCount 值默认为 5,但我遇到的只是一个未完成的请求而阻塞。
当前版本的 RestKit 是否仍将其默认为 5,如果是,是什么导致我缺少并发请求?
RestKit 0.20.3
请求
- (RKManagedObjectRequestOperation*) getUser {
RKObjectManager *objectManager = [RKObjectManager sharedManager];
NSDictionary *items = [objectManager.HTTPClient defaultHeaders];
NSString *auth = [items objectForKey:@"Authorization"];
if (auth == nil) {
NSLog(@"You must login first\n");
return nil;
}
auth = [auth stringByReplacingOccurrencesOfString:@"Bearer " withString:@""];
NSMutableString *path = [NSMutableString stringWithFormat:@"/users?accessToken=%@", auth];
return [[RKObjectManager sharedManager] appropriateObjectRequestOperationWithObject:nil method:RKRequestMethodGET path:path parameters:nil];
}
- (void) getUser:(void ( ^ ) ( RKObjectRequestOperation *operation , RKMappingResult *mappingResult ))success failure:(void ( ^ ) ( RKObjectRequestOperation *operation , NSError *error ))failure {
RKManagedObjectRequestOperation *requestOperation = [self getUser];
[requestOperation setCompletionBlockWithSuccess:success failure:failure];
[requestOperation start];
}
前者是用于测试的助手,而后者实际上是由生产代码调用的。我的代码中没有看到明确设置队列大小的任何地方。
【问题讨论】:
-
具体说明您使用的版本号。您是否记录了队列的并发计数?另外,显示您正在使用的代码,有时队列大小明确设置为 1。
-
@Wain 已更新。我没有在任何地方设置队列大小,我只是进行标准的
appropriateObjectRequestOperationWithObject:method:path:parameters:调用。
标签: restkit nsoperation nsoperationqueue restkit-0.20