我有一个应用程序,我试图使用asihttp调用web服务。一切正常,但问题是当完成呼叫后正在进行的服务呼叫都工作正常时,我的操作按钮都不起作用。以下是我的代码
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:strURL]];
[request setAuthenticationScheme:(NSString *)kCFHTTPAuthenticationSchemeBasic];
[request setUsername:usrname];
[request setPassword:passwrd];
[request setRequestMethod:@"GET"];
[request setDelegate:self];
[request setDownloadDestinationPath:JsonPath];
[request startAsynchronous];
我已经测试了同步和异步但同样的问题。
答案 0 :(得分:1)
在后台线程中调用下载方法。
在主线程上下载完成后调用updateUI方法。
答案 1 :(得分:1)
我知道ASIHTTP在主线程中调用它们的方法。您可以使用AFNetWorking
来更快地回复here
答案 2 :(得分:1)
像这样使用Grand Central Dispatch (GCD):
dispatch_queue_t jsonParsingQueue = dispatch_queue_create("jsonParsingQueue", NULL);
dispatch_async(jsonParsingQueue, ^{
@try {
//call webservise code
}
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
}
dispatch_async(dispatch_get_main_queue(), ^{
//table reload or other code
});
});