2012-04-01 6 views
6

私はいくつかのコントローラを持つiOSアプリケーションを持っていて、それぞれ独自のxibファイルを持っています。iOS開発でグローバル変数を保存するにはどうしたらいいですか?

すべてのコントローラにまたがるスコープでグローバル変数を設定するにはどうすればよいですか? NSUserDefaultsを使用し、毎回各ビューのデータを取得する必要がありますか?

答えて

7

NSUserDefaultsは、永続性を必要とするもの、つまりアプリの起動の間にそれらを保存する予定のものです。一時変数の場合はシングルトンインスタンスを使用することを検討してください(この回答に示されているMySingletonクラスなど):https://stackoverflow.com/a/145164/108574

このクラスをお持ちの場合は、このクラスのテンポラリ変数をこのクラスのpropertyと入力してください。アクセスする必要がある場合は、[MySingleton sharedSingleton].variableに電話してください。

詳細については、http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.htmlもご確認ください。

2

正確なニーズに応じて、Singletonデザインパターンについて学び、すべてのビューで共有できる種類のデータベースオブジェクトを作成することができます。 iOS Singletons hereについて読む

これは、私がiOSアプリケーションで探していることを達成した方法です。

10

一般的に、グローバルの使用を避けたいとします。共有する必要のあるデータにアクセスする必要がある場合は、2つの一般的なアプローチがあります。

AppDelegateに値を入力します。

共有値が1つまたは2つの場合、AppDelegateを使用すると簡単に共有コンテンツを配置できます。

AppDelegateのようなあなたのコントローラからアクセスすることができます:FooAppは、アプリケーションクラスの名前です

FooApp* appDelegate = (FooApp*)[[UIApplication sharedApplication] delegate]; 

シングルトンクラスを作成します。共通の価値観の多くとあなたのAppDelegateを汚染

は理想的ではない、および/またはこれらの値は、セッション間で永続化したい場合は、NSUserDefaults によって支えられてSingletonクラスを作成すると、全体で価値観を共有する別の方法ですインスタンス。