アプリで、リモート レスト サービスにヒットするタイプ アヘッドを作成しています。現在の問題は、接続に NSUrl を使用していることです。これは同期であり、json オブジェクトをループする量が多いため、解析に時間がかかります。そのため、検索中に UI がフリーズします。
したがって、私はやろうと決めました:
[NSURLConnection sendAsynchronousRequest:myRequest
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *taxiData, NSError *error) {
少し良くなったようですが、ほとんどの処理がメイン キューに関連付けられた完了ハンドラで行われるため、まだハングします。
それで、私は自分の NSOperationsQueue を作成するか、dispatch_asynch を使用してみました:
[NSURLConnection sendAsynchronousRequest:myRequest
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *taxiData, NSError *error) {
dispatch_queue_t typeAheadQueue = dispatch_queue_create("typeAhead", NULL);
dispatch_async(typeAheadQueue, ^ {
}];
そしてそれはうまくいきます。唯一の問題は、uitableview がデータを更新するのに 10 秒ほどかかることです。中断することなく入力できるようになりましたが、uitableview の更新に大きな遅延があります。
私はこれに近づいていますか?どんな助けでも大歓迎です。
ありがとう!