extern将数据从一个实例传递到另一个实例的另一个实例

时间:2012-07-29 05:43:24

标签: objective-c extern

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

class1.h:

...
extern NSString global;
...

class1.m:

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

class2.m:

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

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

1 个答案:

答案 0 :(得分: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)
}
    ...