一。在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里面输出这两个值
网友评论