2

AppDelegate が現在表示されているビュー コントローラーへのポインターを取得できるようにする必要があります (visibleViewControllerナビゲーション ビューを調べましたが、より一般的なバージョンの方が適しています)。 で使用するためにオブジェクト インスタンスから状態を読み取ることができますapplicationWillResignActive

これを試みて、新しいオブジェクトを初期化しましたが、それらは空です。実行時の任意の時点でオブジェクトの状態が必要です。

オブジェクトに対応するシングルトン クラスを作成し、アプリ デリゲートから呼び出すことができると思いますが、それは扱いにくく、冗長に思えます。View ControllerをAppDelegateのデリゲートにすることも考えましたが、それはさらに悪いようです。

おそらく明らかなことを見落としていることはわかっていますが、明確にすることができないため、検索の言い回しが間違っているに違いありません。Stack Overflow を 10 分間検索し、View Controller と appdelegate のドキュメントをざっと読みました。

アプリ デリゲートから実行時にオブジェクトのプロパティ値にアクセスするにはどうすればよいですか?

4

1 に答える 1

2

View Controller の正確な動作と、アプリを再度開いたときに状態を復元する方法に応じて、 のAppDelegate関与は最小限に抑える必要があります。

代わりに、適切なView Controllerに通知を監視させUIApplicationWillResignActiveNotification、それぞれが独自の状態の独自のストレージを実行することを検討する必要があります。アプリが再び開くと、AppDelegateルート ビュー コントローラーが復元され、ルート VC が何かを復元する必要があるかどうかを確認し、すべてのデータが復元されるまでチェーンを続けます。これにより、すべてのロジックとデータ ストレージがモジュール化され、分離されます。

あなたが本当に:

実行時の任意の時点でオブジェクトの状態が必要

次に、別の設計上の問題があり、それを分解する必要があります。はAppDelegate特定のタスクに使用する必要がありapplicationWillResignActive、果たすべき役割がありますが、その役割は、実行する必要がある作業の 100% を管理することであってはなりません。

于 2013-05-14T07:37:07.823 に答える