Object Cにおけるstaticキーワード

2865 ワード

Objective-Cでは、変数宣言前にキーワードstaticを付けることで、ローカル変数に1つのメソッドを複数回呼び出した値を保持できます.たとえば、次のObjective-C文です.
static int hitCount = 0;
宣言整数hitCountはstatic静的変数です.他の一般的な局所変数と異なり、Objective-Cのstatic静的変数の初期値は0であるため、前に表示された初期化は余計である.また、プログラムの実行が開始されたときにのみ初期化され、メソッドが複数回呼び出されたときに保存されます.だから符号化シーケンス
1
2
3
4
5
6
7 -( void ) showPage { static int pageCount = 0; ... ++pageCount; ... }
showPageメソッドでは、メソッドの呼び出し回数を記録するために使用される場合があります(この場合、印刷するページ数もあります).プログラムの開始時に局所staticが最も静的に0に設定され、showPageメソッドが連続的に呼び出されたときにのみ新しい値が得られます.
注意pagaCnuntは、ローカル静的変数とインスタンス変数の違いに設定されます.前者の場合、pageCountはshowPageメソッドを呼び出すすべてのオブジェクト印刷ページの数を記録することができる.後者の場合、pageCount変数は、各オブジェクトに独自のpageCountコピーがあるため、各オブジェクトが印刷されるページ数を計算することができる.
これらの変数は、静的および局所的な変数を定義する方法でのみアクセスできることを覚えておいてください.したがって,静的変数pageCountでもpageCount関数でしかアクセスできない.変数の宣言は、通常implementationファイルの先頭に配置されるすべてのメソッド宣言の外部に移動できます.これにより、次のようにすべてのメソッドがアクセスできます.
1
2
3
4
5 #import “Printer.h” static int pageCount; @implementation Printer ... @end
このファイルに含まれるすべてのインスタンスまたはクラスメソッドが変数pageCountにアクセスできるようになりました.スコアに関する議論を返し、reduceメソッドのコードを実装ファイルFractionに結合する.m中.インタフェースファイルを忘れないでhでreduceメソッドを宣言すると、次のコードでこの新しいメソッドをテストできます.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #import “Fraction.h” int main ( int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; Fraction *aFraction = [[Fraction alloc] init]; Fraction *bFraction = [[Fraction alloc] init]; [aFraction setTo: 1 over: 4]; // set 1st fraction to 1/4 [bFraction setTo: 1 over: 2]; // set 2nd fraction to 1/2 [aFraction print]; NSLog (@”+”); [bFraction print]; NSLog (@”=”); [aFraction add: bFraction]; // reduce the result of the addition and print the result [aFraction reduce]; [aFraction print]; [aFraction release]; [bFraction release]; [pool drain]; return 0; }
結果は次のように出力されます.
1
2
3
4
5 1 /4 + 1 /2 = 3 /4
はい、Objective-Cのstatic静的変数の使い方を紹介します.初心者に助けてほしいです.ありがとうございます.