extern ios
2016-05-06 23:39:00 weixin_30800987 阅读数 2

前言

将编程语言按照程序的应用分两种,Complier LanguageInterpreted Language

Objective-C和C++都是编译语言,编译语言在执行之前,必须通过编译器生成机器码,然后在CPU上直接执行,执行效率高。

Objective-C采用Clang前段,LLVM(Low level vritual machine)作为编译器后段,步骤:
Clang -> LLVM Optimizer -> LLVM Code Generator

Clang: 语法分析,语义分析,生成中间代码(intermediate representation)。在这个过程中进行类型检查,如果发现错误或者警告会标注哪一行。
LVVM(Optimizer,Generator): BitCode生成,链接期优化/针对不同框架,生成不同机器码。

iOS程序中多个源文件,每个源文件在编译后期会对应一个.obj文件,这些目标文件之间就可能有关联,然后链接在一起生成可执行文件。

1.extern定义变量(e.g. NSString *)###
声明一个已经定义过的变量,多个源文件可以共同使用同一个变量(static相反)。

.h:
extern NSString * const kEXTERNTAGSTRING;
.m:
NSString * const kEXTERNTAGSTRING = @"externTagString";

2.extern定义外部函数

  • 外部函数:当前文件定义的函数允许其他文件访问,不可以有重名的外部函数;
  • 内部函数:当前文件定义的函数只能允许内部使用,可以重名;

参考

1.iOS编译过程

iOS 编译

转载于:https://www.cnblogs.com/R0SS/p/5467491.html

2017-07-27 14:58:00 weixin_34129696 阅读数 2

extern关键字

原来经常看到extern关键字,但是一直搞不懂具体的用法,以及跟static的区别。今天就要搞懂它~~~

1.首先随便先一个类Foo,并在头文件里添加extern NSString * const fooExtern;
Foo.h

#import <Foundation/Foundation.h>

extern  NSString * const fooExtern;

@interface Foo : NSObject
@end
  • 这里不能定义,否则会报错(static关键字是可以的,如:static NSString * const str = @"ahaha";)
  • 如果我只声明不定义,然后在外部使用fooExtern会怎样?编译会报错~。说明这里的extern只是声明,必须在别的地方定义

2.然后Foo.m里定义,写在哪呢?

  • 刚开始我并不知道怎么用,写在了某个方法里,如下:
#import "Foo.h"

@implementation Foo

- (instancetype)init {
    if (self = [super init]) {
         NSString * const fooExtern = @"haha";
    }
    return self;
}

@end

结果:外部调用时会报错的

  • 正确的写法,如下:
#import "Foo.h"

NSString *const fooExtern = @"hhaa";
@implementation Foo

@end
  • 外部调用的写法:如下:
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    NSLog(@"extern:  %@", fooExtern);
}

fooExtern的定义写在viewControler里也是可以,因为extern NSString * const fooExtern;只是声明有一个fooExtern,定义在哪个地方都可以

2013-07-08 17:34:13 u010013695 阅读数 1244

ios开发使用extern访问全局变量

使用extern关键字法:

        1 、新建Constants.h文件(文件名根据需要自己取),用于存放全局变量;

        2、 在Constants.h中写入你需要的全局变量名,但是在定义时不能对其进行初始化,否则就出错例如:

                  NSString *url;//指针类型
                 int count;//非指针类型

        3  、在需要用到全局变量的文件中引入此文件:

                   #import "Constants.h"  

        4、给全局变量初始化或者赋值:

  1.  extern NSString *url;     
  2.   
  3. url = [[NSString alloc] initWithFormat:@"http://www.hbcfg.net"];//指针类型;需要alloc   
  4.   
  5. extern int count;   
  6.   
  7. count = 0;//非指针类型  

       在使用全局变量的时候就和使用普通变量一样使用了。

当然还有其他的方法:可以在AppDelegate中声明并初始化全局变量,使用单例访问全局变量等

转自:http://blog.csdn.net/yhawaii/article/details/7641694

2015-01-07 11:15:42 u013375242 阅读数 6459

Demo下载http://download.csdn.net/detail/u013375242/8335911

不说废话,iOS开发,用的Xcode,项目结构如下:


1.定义My_extern类,继承NSObject,

.m文件如下

.:

2。在ViewController调用,不用引入上类的头文件,直接在ViewController.h使用:如下:





extern 用法解释

   在源文件A里定义的变量,在其它源文件里是看不见的(即不能访问)。为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明:
  extern   变量;  

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

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


2013-11-06 15:57:07 idiota 阅读数 199


ios开发使用extern访问全局变量

使用extern关键字法:

        1 、新建Constants.h文件(文件名根据需要自己取),用于存放全局变量;

        2、 在Constants.h中写入你需要的全局变量名,但是在定义时不能对其进行初始化,否则就出错例如:

                  NSString *url;//指针类型
                 int count;//非指针类型

        3  、在需要用到全局变量的文件中引入此文件:

                   #import "Constants.h"  

        4、给全局变量初始化或者赋值:

  1.  extern NSString *url;     
  2.   
  3. url = [[NSString alloc] initWithFormat:@"http://www.hbcfg.net"];//指针类型;需要alloc   
  4.   
  5. extern int count;   
  6.   
  7. count = 0;//非指针类型  

       在使用全局变量的时候就和使用普通变量一样使用了。

当然还有其他的方法:可以在AppDelegate中声明并初始化全局变量,使用单例访问全局变量等

iOS之extern关键字

阅读数 990

iOS extern使用教程

阅读数 321

iOS extern使用教程

阅读数 17221

没有更多推荐了,返回首页