iOS|iOS 宏定义与constant 的使用

一。在iOS中,经常使用宏定义,或者使用constant 修饰一些数据类型,要正确区分他们的使用不要在项目中乱用
1.当我们想全局共用一些数据是,可以使用宏,变量,常量
宏:
#defineJJHeader @"俊俊"
变量:
NSString *JJHeader = @"俊俊";


常量区分:
1)全局常量:不管你定义在任何文件夹,外部都能访问
constant NSString *JJCoder = @"俊俊不是丑女";
举个例子:
【iOS|iOS 宏定义与constant 的使用】你在某一个控制器里定义了字符串全局常量JJCoder
constant NSString *JJCoder = @"俊俊不是丑女";

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

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

2)局部常量:用static修饰后,不能提供外界访问
加上static 之后。
static const NSString*JJCoder =@"俊俊不是丑女";

在其他控制器里此时运行一下就会报错,
iOS|iOS 宏定义与constant 的使用
文章图片
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;




iOS|iOS 宏定义与constant 的使用
文章图片


int const *p =NULL;
inta =20;
intb =60;
p = &a;
*p =80;
*p不能改,与上面的错误一样
int*constp =NULL;

inta =30;
intb =60;
p = &a;
*p =50;
iOS|iOS 宏定义与constant 的使用
文章图片
p 不能被修改
二。怎么在工程当中使用到这样的全局常量
举个例子:
比如在工程当中用到一些通知通知的名字不可修改
一般项目中,定义全局常量,会写在独立文件里

比如pch 或者 其他文件(单独放项目常量的文件)
在.m 文件里(在 FindViewController)里
iOS|iOS 宏定义与constant 的使用
文章图片
在.h 里面暴露出来


iOS|iOS 宏定义与constant 的使用
文章图片
在需要这些值得地方引入这两个值的.h
#import"AppDelegate.h"

#import"RootFirstViewController.h"
#import"FindViewController.h"
在APPDElegate里面输出这两个值
iOS|iOS 宏定义与constant 的使用
文章图片

    推荐阅读