2012-03-16 7 views
-2

Objective Cのどのクラスでも変更可能なグローバル変数(基本的にはフラグvar)を作成したいと思いますか?すべての例が評価されます。どのクラスでもアクセス可能なグローバル変数

+6

あなたはこれについてグーグルについて考えることさえしませんでしたか? – PengOne

+0

アプリケーションデリゲートにプロパティを追加します。 – Jeremy

+0

[Objective-Cのグローバル変数](http://stackoverflow.com/questions/1113980/global-variables-in-objective-c)とhttp://stackoverflow.com/questions/5098990/の可能な重複in-objective-c-how-do-you-declare-use-a-global-variable、http://stackoverflow.com/questions/7081245/global-variables-in-xcode、およびhttp://stackoverflow.comを参照してください。/questions/3601341/iphone-global-variable –

答えて

2

シングルトンパターン。

http://www.galloway.me.uk/tutorials/singleton-classes/

常に新しいオブジェクトを作成するか、またはあなたの既存のものを与えるだろう「sharedManager」メッセージを通じて、オブジェクトを参照。

+0

Stevenに感謝します。これは参考になります。 – user1140780

1

Objective-Cには、古い「C」がカバーの下で実行されていることを忘れないでください。したがって、Objective-CではC言語のようにグローバル変数を作成できます。

1

これを確認してください。あなたのappname.pchファイルでいくつかのクラスをインポートすると、アプリケーションシングルトンから簡単にアクセスできるので、アプリケーションデリゲートと言うことができます。

#define MY_APP_DELEGATE (((MYAppDelegate *)[UIApplication sharedApplication].delegate)) 

ようにそこスクリップを追加し、任意のクラスから、このようにデリゲート変数を使用します。

int val1 = MY_APP_DELEGATE.myvar; 
MY_APP_DELEGATE.myvar = 1; 
2

のObjective CはANSI Cの厳密なスーパーセットなので、作成して使用するために使用されるステッププレーンCグローバル変数を目的Cで使用することができます。

クラスインターフェイス、メソッド、またはサブルーチンスコープの外にある.mファイルで、グローバル変数を宣言またはインスタンス化します。ゴミ値で始める):

BOOL myGlobalFlag = NO; 

、(グローバル変数の使用はバグの特定の種類に関与しているのリスクが高いと考えられているので、あなたは、それらを見つける必要があるかもしれません)を見つけるためにこれらのグローバルが簡単にトップでそれらを置くために必要なインクルードの直後にファイルのまたは、App Delegate、main()を含むファイル、またはプロジェクトに含まれるmy_apps_globals.cなどのすべてのグローバルのみを含むファイルなど、すべてのグローバルファイルを簡単に見つけることができます。

あなたは、この変数にアクセスしたい任意のクラス、.M、または.Cファイルに属する少なくとも一つの.hファイルで

、および任意のクラスインタフェースや構造体定義の外、など外部からアクセス可能なこの変数を宣言します。

extern BOOL myGlobalFlag; 

次に、上記のいずれかのヘッダーファイルを含む任意のメソッドまたはサブルーチン内で、変数を使用します。

-(void)dummyMethod { 
    if (myGlobalFlag) NSLOG(@"the Flag is set!!!"); 
} 
関連する問題