2011-07-06 4 views
3

Objective-Cクラスで静的変数を作成するにはどうすればよいですか?私はプライベート変数のための私のヘッダーファイルで@privateを使用することに精通していますが、私は静的変数にアクセスする静的メソッドを作成しようとしています。この静的変数をヘッダファイルにどのように宣言する必要がありますか?Objective-CスタティックのModifers?

+1

可能重複(http://stackoverflow.com/questions/1063229/objective-c-static-class-level-variables) –

答えて

1

Objective-Cには静的なクラス変数はありません。ただし、モジュール静的変数をC言語と同様に作成できます。静的変数をプライベートにするには:

//MyClass.m 
static int MyStatic; 

@implementation MyClass 
@end 

は、MyStaticモジュールレベルのスコープを指定します。これはちょうどCなので、MyStaticをから見えるようにする方法はありません。カテゴリをMyClassに公開し、extern宣言で公開することはできません。静的変数は実質的にグローバル変数なので、これはおそらく良いことです。つまり、MyClassはMyStaticの存在を隠すために絶対にできるすべてを実行する必要があります。

あなたは、静的変数はパブリックになりたい場合は(あなた本当にはしたくない):[Objective Cの静的クラスレベル変数]の

//MyClass.h 
extern int MyStatic; 

@interface MyClass {} 
@end 

//MyClass.m 
int MyStatic; 

@implementation MyClass 
@end 
+0

あなたの例では、MyStaticを静的宣言するのを忘れましたか? – Kent

2

Objective-Cの静的変数は、C(静的変数)の静的変数と同じ規則に従います。静的変数は、ファイルまたは関数のスコープで宣言できますが、インスタンス変数と同様にクラスとの関係はありません。

3

Objective-Cはこの点でCの後に続くだけです。静的なファイル変数を作成します。あなたの実装(つまり、.mファイル)では、どこにでも宣言を置くことができます(しかし、理想的には、ファイルの最上部のような賢明な場所、または1つの場所でのみアクセスされる場合は関連するメソッドですら)。

このような静的に制御されたアクセスを提供する場合は、メソッドの実装の外側に配置し、クラスメソッドを使用してアクセスします。

関連する問題