iOSとCocoaは初めてです。私の質問は、何かを機能させる方法ではなく、UXとパフォーマンスを向上させるためのデザインについてです。
既存のアプリに機能を追加しています。現在、アプリにはサーバーリクエストの作成を担当するクラス「RootViewController」(RVC)が1つあります。RVCは、json応答のためにサーバーを呼び出します。このjson応答は解析され、解析された応答は「array」と呼ばれるNSArrayオブジェクトによって参照されます。サーバーが「アレイ」に提供するデータは、他の顧客が購入できるライブインベントリを表すため、定期的に更新する必要があります。
アプリの存続期間中のさまざまな時点で、他のクラスの「配列」への参照を使用する必要があります。「配列」を使用または更新するたびにサーバーを呼び出したくありません。自分のデバイスでこのアプリをテストすると、サーバーの呼び出しが遅くなる可能性があるようです->アプリのパフォーマンスが低下します。
NSArrayへの参照を保持するためのデリゲートとして機能できるクラスを作成することを検討しました。これは、グローバル変数のように機能するようなものです。サーバーに非同期リクエストを送信し、このデリゲートクラスの応答に対応します。このアプローチが効率的であるか、またはベストプラクティスを考慮しているか(MVCを念頭に置いて)を判断する方法がわかりません。
ネットワークやメモリ使用量にあまり依存せずに他のクラスがすぐに使用できるように、「配列」を格納するのに最適な場所を探しています。「アレイ」は、サーバーから時々更新できる必要があります(「モデル」はインベントリの変更によって変更される可能性があるため)。私の調査によると、iOSのCoreDataを開始するのに最適な場所のようですが、アプリがアクティブでない場合にCoreDataを定期的に更新する方法がわかりません。つまり、CoreDataのデータが最近更新されていない場合は、古いデータをユーザーに提示したくありません。
jsonの応答は約20KB〜45KBです。
定期的に更新できるように軽量オブジェクトを保管するのに最適な/代替の場所はどこですか?私はセッションスタイル変数に傾倒していますが、これを行うためのより良い方法があるかどうかはわかりません。