0

私はObjectiveCに次のコードを持っています:

class1.h:

...
extern NSString global;
...

class1.m:

  ...
    NSString *global;
    @implementation:
    ..
-dostuff{
    global=@"hi";
}
    ..
    @end
    ...

class2.m:

  #import "class1.h"
    ...
-printval:{
    NSlog(@"%@",global)
}
    ...

クラス1のメソッドを呼び出した後、クラス2のメソッドを呼び出して、グローバルを出力しようとします。しかし、これは機能しません...私はこの権利を理解していませんか?

4

1 に答える 1

0

これは正しくありません。このキーワードexternは、グローバル (非静的) 変数が別のモジュール (ファイル) で宣言されていることをコンパイラに伝えるために使用されます。したがって、このようなことを試してみてください。

class1.h:

...
NSString *global = nil;
...

class1.m:

  ...
    extern NSString *global;
    @implementation:
    ..
-dostuff{
    global=@"hi";
}
    ..
    @end
    ...

class2.m:

#import "class1.h" 
...
extern NSString *global;
-printval:{
    NSlog(@"%@",global)
}
    ...
于 2012-07-29T06:01:01.157 に答える