0

私はiPhoneアプリに取り組んでいます。Touch Json を使用して、Json データを返す PHP Web サービスを解析します。Web サービスは、ボタンのクリック イベントで呼び出されます。

Web サービスはほぼ 10 秒で解析されますが、応答は非常に遅いです。

応答が解析されるとすぐに、新しいビューをプッシュする必要があります。

応答はほぼ 10 秒で解析されますが、次のビューに移動するのに 1 分かかります。

この問題をできるだけ早く修正する必要があります。

誰でもこれで私を助けることができますか?

前もって感謝します。

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

iOS 5 より前に何もサポートする必要がない場合は、JSON を解析するためのサード パーティのライブラリも必要ありません。これを行うことができます:

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];
}

また、Calin が指摘したように、大量のデータを処理する場合は、別のスレッドで処理する方が賢明です。

于 2013-09-13T06:49:56.740 に答える