0

我正在开发一个 iPhone 应用程序。我使用 Touch Json 来解析返回 Json 数据的 PHP Web 服务。在按钮的单击事件上调用 Web 服务。

Web 服务在将近 10 秒内被解析,但响应速度非常慢。

解析响应后,必须推送新视图。

响应在近 10 秒内被解析,但需要一分钟才能移动到下一个视图。

我需要尽快解决这个问题。

谁能帮我这个?

提前致谢。

4

2 回答 2

0

就像基本思想一样,您使用多线程吗?你应该实现这样的东西。

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 秒后可用。

于 2013-09-13T06:48:54.313 回答
0

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.

于 2013-09-13T06:49:56.740 回答