私は通常のサーバー同期プロセスを実行するiPadアプリを持っています-それは約10秒ごとに実行されます。同期プロセスは、CoreDataSQLベースのストアに挿入されたレコードをダウンロードします。処理されるレコードの数が数百または数千に達する場合があります。
Asynchronous NSURLConnection
現在の同期プロセスは、メインスレッドによってトリガーされたものに基づいています。呼び出しによってすべてNSData
が収集されるasync
と、メインスレッドがNSOperation
バックグラウンドでを起動してを解析NSData
し、データベースに挿入します。
したがって、NSURLConnection
は非同期で実行され、db挿入はバックグラウンドで実行されますNSOperation
。ただし、とのオーケストレーションはNSURLConnection
メインNSOperation
スレッドで行われます。大量のデータがダウンロードされていることを考えると、メインスレッドでのこの少量のオーケストレーションでさえ、UIの応答性に影響を与える可能性があると思います。
したがって、コードを単一のバックグラウンドにリファクタリングし、を同期呼び出しにするNSOperation
ことを考えています。NSURLConnection
次に、シングルNSOperation
が同期的にダウンロードしNSData
、db挿入を管理します。
かなり大規模なリファクタリングに着手する前に、これが良い決定であるかどうかについての人々の見解に興味があります。
現在のメカニズムでは、UIにときどきためらいがあります。メカニズム全体をバックグラウンドNSOperation
に配置することで、UIの応答性が維持されることを期待しています。
知恵の言葉をいただければ幸いです。
ありがとう。