如果我在两个UIViewControllers中同时调用[[RKClient sharedClient] get @“foo.xml”delegate:self]会怎么样?我有什么问题吗?
viewController_A
{
[[RKClient sharedClient] get:@"foo.xml" delegate:self];
}
viewController_B
{
[[RKClient sharedClient] get:@"foo.xml" delegate:self];
}
答案 0 :(得分:1)
如果您查看get:delegate:
的RKClient实现,它只需执行此操作
- (RKRequest *)get:(NSString *)resourcePath delegate:(id)delegate {
return [self load:resourcePath method:RKRequestMethodGET params:nil delegate:delegate];
}
并且load:method:params:delegate:
的实施是
- (RKRequest *)load:(NSString *)resourcePath method:(RKRequestMethod)method params:(NSObject<RKRequestSerializable> *)params delegate:(id)delegate {
NSURL* resourcePathURL = nil;
if (method == RKRequestMethodGET) {
resourcePathURL = [self URLForResourcePath:resourcePath queryParams:(NSDictionary*)params];
} else {
resourcePathURL = [self URLForResourcePath:resourcePath];
}
RKRequest *request = [[RKRequest alloc] initWithURL:resourcePathURL delegate:delegate];
[self setupRequest:request];
[request autorelease];
request.method = method;
if (method != RKRequestMethodGET) {
request.params = params;
}
[request send];
return request;
}
它没有使用任何RKClient状态/共享数据,因此您不会看到问题。方法get:delegate:本身是异步的,所以这个东西无论如何都会在后台发生。
答案 1 :(得分:0)
我猜这两个不同的调用将在两个不同的线程上。有了这个说没有问题应该发生,系统应该能够解决这个过程,但是我不确定会回到'第一'。
总而言之,只要[RKClient sharedClient]
处的对象是线程安全的(除非另有说明,大多数对象似乎都是如此)不应该找到任何问题