私はいくつかのコントローラを持つiOSアプリケーションを持っていて、それぞれ独自のxibファイルを持っています。iOS開発でグローバル変数を保存するにはどうしたらいいですか?
すべてのコントローラにまたがるスコープでグローバル変数を設定するにはどうすればよいですか? NSUserDefaults
を使用し、毎回各ビューのデータを取得する必要がありますか?
私はいくつかのコントローラを持つiOSアプリケーションを持っていて、それぞれ独自のxibファイルを持っています。iOS開発でグローバル変数を保存するにはどうしたらいいですか?
すべてのコントローラにまたがるスコープでグローバル変数を設定するにはどうすればよいですか? NSUserDefaults
を使用し、毎回各ビューのデータを取得する必要がありますか?
NSUserDefaults
は、永続性を必要とするもの、つまりアプリの起動の間にそれらを保存する予定のものです。一時変数の場合はシングルトンインスタンスを使用することを検討してください(この回答に示されているMySingleton
クラスなど):https://stackoverflow.com/a/145164/108574。
このクラスをお持ちの場合は、このクラスのテンポラリ変数をこのクラスのproperty
と入力してください。アクセスする必要がある場合は、[MySingleton sharedSingleton].variable
に電話してください。
詳細については、http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.htmlもご確認ください。
一般的に、グローバルの使用を避けたいとします。共有する必要のあるデータにアクセスする必要がある場合は、2つの一般的なアプローチがあります。
AppDelegateに値を入力します。
共有値が1つまたは2つの場合、AppDelegateを使用すると簡単に共有コンテンツを配置できます。
AppDelegateのようなあなたのコントローラからアクセスすることができます:FooApp
は、アプリケーションクラスの名前です
FooApp* appDelegate = (FooApp*)[[UIApplication sharedApplication] delegate];
。
シングルトンクラスを作成します。共通の価値観の多くとあなたのAppDelegateを汚染
は理想的ではない、および/またはこれらの値は、セッション間で永続化したい場合は、NSUserDefaults
によって支えられてSingletonクラスを作成すると、全体で価値観を共有する別の方法ですインスタンス。