iOS中申明变量时前面加extern

来源:互联网 发布:乳胶床垫 儿童 知乎 编辑:程序博客网 时间:2024/05/22 10:38

A类中

a.m这样定义了一个a类的全局变量

#import "a.h"

NSString* hello=@"helloworld";

@implementation a

// NSString* hello=@"helloworld";

两个地方都行,反正就是定义了这么一个类的全局外部可访问的变量

在B类中

b.m里面这样定义

#import "a.h"

#import "b.h"

extern NSString* hello;

@implementation b

然后你就可以在B类中使用hello,而且hello的值直接就是@"helloworld";


在做项目的时候,我们可以定义一个Config.h

#ifndef cfg

#define cfg

    NSString *url = @"www.baidu.com";

#endif

在Appdelegate.m中初始化url

#import "AppDelegate.h"

#import "Config.h" 

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   变量;   

  这样,在源文件B里也可以调用那个变量了。  

  注意这里的用词区别:在A里是定义,在B里是声明。一个函数只能(也必须)在一个源文件里被定义,但是可以在其它多个源文件里被声明。定义引起存储分配,是真正产生那个实体。而声明并不引起存储分配。打一个粗俗的比方:在源文件B里声明后,好比在B里开了一扇窗,让它可以看到A里的那个变量。


0 0
原创粉丝点击