我正在开发一个 iPhone 应用程序。我使用 Touch Json 来解析返回 Json 数据的 PHP Web 服务。在按钮的单击事件上调用 Web 服务。
Web 服务在将近 10 秒内被解析,但响应速度非常慢。
解析响应后,必须推送新视图。
响应在近 10 秒内被解析,但需要一分钟才能移动到下一个视图。
我需要尽快解决这个问题。
谁能帮我这个?
提前致谢。
就像基本思想一样,您使用多线程吗?你应该实现这样的东西。
dispatch_queue_t myqueue = dispatch_queue_create("queue", NULL);
dispatch_async(myqueue, ^{
//load your Json data here ex [dataManager loadData];
dispatch_async(dispatch_get_main_queue(), ^{
//post a notification here for the table/view controller that needs to reload data
});
});
现在,您甚至可以在调用此块之前推送到新的视图控制器,并为通知添加一个观察者以重新加载数据。转场将是即时的,您的数据将在 10 秒后可用。
If you don't need to support anything prior to iOS 5, you don't even need any third party libraries for parsing JSON anymore. You can just do this:
NSError *jsonError = nil;
NSDictionary *response = [NSJSONSerialization JSONObjectWithData:[responseString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableLeaves error:&jsonError];
if ( response )
{
NSString *exampleValue = [response objectForKey:@"exampleKey"];
[self.navigationController pushViewController:yourViewController animated:YES];
}
Also, as Calin pointed out, if you're processing a huge amount of data, it's wiser to do it on a separate thread.