0

{ } 内で変数を宣言する場合と、ヘッダー ファイルで @interface & @end の外で変数を宣言する場合の違いを教えてください。どちらの方法でも、コンパイルは成功します。

4

2 に答える 2

5

変数をクラス (別名インスタンス変数) の一部にしたい場合は、括弧内で宣言します。それ以外の場合は、クラスとは関係のないグローバル変数として宣言されます。

例えば

// XYZ.h

@interface XYZ
{
  int myinstancevariable;
}
@end

int myglobalvariable;

...

XYZ* a = [[XYZ alloc] init];
NSLog(@"%d", [a myinstancevariable]);
NSLog(@"%d", myglobalvariable );

編集:{}を忘れた

于 2012-06-11T07:14:31.593 に答える
1

変数をスコープ内で宣言すると、code block - {}そのスコープ (ライフスパン) はそのブロック内のみになります。

外部で宣言すると、@interfaceスコープ@endはそのファイル内になります。これがヘッダー ファイルの場合、この変数はグローバルに使用できます。

于 2012-06-11T07:15:55.540 に答える