2

私は非常に大きなアプリを設計しており、起動時にいくつかの異なるサーバーとのセッションを作成します。アプリのすべての部分で使用されるセッションを作成しているので、App Delegate が最適だと思いました。

しかし、問題は、セッションの進行状況を画面に表示する必要があることです。メイン メニューの下部に UIToolBar を配置する予定ですが、これはプログレス バーで覆いたくありませんが、その上の UIView を覆います。

1) App Delegate にセッションを確立させ、進行状況をメイン メニュー クラスに報告させて、進行状況バーに表示できるようにします (セッションが別のスレッドで作成された場合、これを行う際に問題は発生しますか?)、

2) アプリ デリゲートにメイン メニュー (一連のボタンと UIToolBar を備えた UIView) を表示させ、進行状況を追跡して表示させます (アプリ デリゲートに何も表示したことはありませんが、これを実行できると仮定しますが、お勧めしません)。

3) App Delegate にメイン メニューをプッシュさせ、mainMenu クラスにセッションを作成させ、プログレス バーを表示させます。

4) デリゲート クラスでセッションを作成し、デリゲートをセルフ (AppDelegate) ではなく mainMenu に設定するのが他の方法だと思いますが、セルフ以外のものを使用したことがないので、これが機能するかどうかはわかりません。または、クラスのデリゲートではなく AppDelegate で実行されているスレッドを (super を呼び出すことで) 閉じることができる場合。

前に言ったように、セッションは別のスレッドのクラスで作成されるため、UI がロックされません。最善の方法は最初の方法だと思いますが、別のスレッドで実行すると問題が発生するのでしょうか。アプリデリゲートに戻り、そのメッセージを mainMenu ビューに送信しますか?

すべてが理にかなっていることを願っています。さらに明確にする必要がある場合はお知らせください。どんな情報でも大歓迎です

乾杯、

4

1 に答える 1

1

おそらく、接続の状態はアプリの機能に影響を与えます。私はおそらく、接続を開始し、状態を維持し、状態について照会されたときに応答できる接続マネージャー オブジェクトの観点から考えるでしょう。シングルトンオブジェクトが既存のオブジェクトを返すか、存在しない新しいオブジェクトを作成して返すのと同じように、接続マネージャーは「接続を確立する」メソッドさえ必要とせず、「ハンドルを取得する」だけです-接続が存在しない場合開いて、そうしようとすることができます。

また、メイン画面でステータスを報告する必要があることにも言及しています。バックグラウンドで不確定な時間のタスク (準備ができている、ビジー状態、遠く離れている、または単純に壊れている可能性のあるホストへの接続を開く) を実行できるマネージャー オブジェクトを用意し、進行状況をメイン スレッドに報告して、UI を操作できるようにします。更新 (セカンダリ スレッドでの UIKit アクセスがないことを思い出してください) は理想的であり、View も区別されます。

于 2010-05-19T01:00:54.633 に答える