iOS面试专题

iOS 宏定义与constant 的使用

2017-01-19  本文已影响0人  俊俊吖

一。在iOS中,经常使用宏定义,或者使用constant 修饰一些数据类型,要正确区分他们的使用不要在项目中乱用

1.当我们想全局共用一些数据是,可以使用宏,变量,常量

宏:

#define  JJHeader @"俊俊"

变量:

NSString *JJHeader = @"俊俊";

常量区分:

1)全局常量:不管你定义在任何文件夹,外部都能访问

constant NSString *JJCoder = @"俊俊不是丑女";

举个例子:

你在某一个控制器里定义了字符串全局常量  JJCoder

constant NSString *JJCoder = @"俊俊不是丑女";

extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。另外,extern也可用来进行链接指定。

然后在工程其他任何地方都能找到这个常量(在其他地方找的时候要使用extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。必须和全局常量同名)

extern NSString*JJCoder;

2)局部常量:用static修饰后,不能提供外界访问

加上static 之后。

static const NSString*JJCoder =@"俊俊不是丑女";

在其他控制器里此时运行一下就会报错,

3)constant 修饰的位置不同,代表什么含义

1.constant NSString *JJcoder = @"俊俊不是丑女";

*JJcoder 不能被修改,JJcoder能被修改

2.NSString constant *JJcoder = @"俊俊不是丑女";

*JJcoder不能被修改,JJcoder 可以被修改

结论:const右边的总不能被修改

举个例子:

const int*p =NULL;

inta =20;

intb =30;

p = &a;

*p =20;

int const *p =NULL;

inta =20;

intb =60;

p = &a;

*p =80;

*p不能改,与上面的错误一样

int*constp =NULL;

inta =30;

intb =60;

p = &a;

*p =50;

p 不能被修改

二。怎么在工程当中使用到这样的全局常量

举个例子:

比如在工程当中用到一些通知通知的名字不可修改

一般项目中,定义全局常量,会写在独立文件里

比如pch 或者 其他文件(单独放项目常量的文件)

在.m 文件里(在 FindViewController)里

在.h 里面暴露出来

在需要这些值得地方引入这两个值的.h 

#import"AppDelegate.h"

#import"RootFirstViewController.h"

#import"FindViewController.h"

在APPDElegate里面输出这两个值

上一篇下一篇

猜你喜欢

热点阅读