A类中
a.m这样定义了一个a类的全局变量
NSString* hello=@"helloworld";
@implementation a
// NSString* hello=@"helloworld";
两个地方都行,反正就是定义了这么一个类的全局外部可访问的变量
在B类中
b.m里面这样定义
extern NSString* hello;
@implementation b
然后你就可以在B类中使用hello,而且hello的值直接就是@"helloworld";
在做项目的时候,我们可以定义一个Config.h
NSString *url = @"www.baidu.com";
在Appdelegate.m中初始化url
extern NSString* url;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
NSLog(@"%@",url);
//输出www.baidu.com
url = @"www.google.com";
//改变hello的值
return YES;
}
然后其他类同Appdelegate一样extern hello
1.定义My_extern类,继承NSObject,
.m文件如下
.:
2。在ViewController调用,不用引入上类的头文件,直接在ViewController.h使用:如下:
extern 用法解释
在源文件A里定义的变量,在其它源文件里是看不见的(即不能访问)。为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明:
extern 变量;
注意这里的用词区别:在A里是定义,在B里是声明。一个函数只能(也必须)在一个源文件里被定义,但是可以在其它多个源文件里被声明。定义引起存储分配,是真正产生那个实体。而声明并不引起存储分配。打一个粗俗的比方:在源文件B里声明后,好比在B里开了一扇窗,让它可以看到A里的那个变量。