0

我在目标 C 中有以下代码:

类1.h:

...
extern NSString global;
...

类1.m:

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

类2.m:

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

在调用类 1 中的一个方法后,我调用类 2 中的一个方法,该方法尝试打印出全局。但是,这不起作用...我不理解这一点吗?

4

1 回答 1

0

这不完全正确。该关键字extern用于告诉编译器在另一个模块(文件)中声明了一个全局(非静态)变量。所以你应该尝试这样的事情。

类1.h:

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

类1.m:

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

类2.m:

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