Objective-Cクラスで静的変数を作成するにはどうすればよいですか?プライベート変数のヘッダーファイルで@privateを使用することはよく知っていますが、静的変数にアクセスする静的メソッドを作成しようとしています。この静的変数をヘッダーファイルでどのように宣言する必要がありますか?
3 に答える
この点で、Objective-C は単純に C に従います。つまり、静的ファイル変数を作成します。実装 (つまり .m ファイル) の任意の場所に宣言を配置します (ただし、理想的には、ファイルの先頭などの適切な場所、または 1 か所でのみアクセスされる場合は関連するメソッド内)。
このような static への制御されたアクセスを提供する場合は、メソッド実装の外に配置し、クラス メソッドを使用してアクセスします。
Objective-C の静的変数は、C の静的変数と同じ規則に従います (ストレージ修飾子)。ファイルまたは関数スコープで静的変数を宣言できますが、インスタンス変数のようにクラスとは関係ありません。
Objective-C には静的クラス変数がありません。ただし、(C と同様に) モジュール静的変数を作成することはできます。プライベートな静的変数を持つには:
//MyClass.m
static int MyStatic;
@implementation MyClass
@end
MyStatic
モジュールレベルのスコープを提供します。extern
これは単なる C であるため、宣言を介してパブリックに可視化せずに、MyClass のカテゴリなどから MyStatic を可視化する方法はありません。静的変数は事実上グローバル変数であるため、これはおそらく良いことです。MyClass は、 の存在を隠すためにできる限りのことを行う必要がありMyStatic
ます。
静的変数をパブリックにしたい場合 (本当にしたくありません):
//MyClass.h
extern int MyStatic;
@interface MyClass {}
@end
//MyClass.m
int MyStatic;
@implementation MyClass
@end