Hello world,各位碼神們,小白開發(fā)叉叉一雞今天開始寫人生中的第一篇技術(shù)文章,謝謝大家的支持。
今天我們來討論一下ios開發(fā)中常用到的兩個技術(shù)宏和const
相信做ios開發(fā)的沒有不知道他們,在這里我就不介紹它們是干什么的了。
下面我們來說說宏和const的用法
1.宏
1.1宏的使用規(guī)范
#define? CYUSERNAME @"accountsdf"
以#define開頭,CYUSERNAME是宏的名字(一般大寫),@"accountsdf"是宏的內(nèi)容(可以是字符串,也可以是基本數(shù)據(jù)類型)
1.2宏的使用場景
在開發(fā)中 ,當(dāng)我們有用到一些常量字符串,比如接口,id,ip地址等數(shù)據(jù)時(shí),我們可以使用宏來進(jìn)行定義,也有一些常用的代碼需要經(jīng)常用到,但寫法比較復(fù)雜,比如[UIScreen mainScreen].bounds.size.height,我們可以用宏來定義,以達(dá)到快速開發(fā)的效果。
1.3宏的運(yùn)用舉例
#define? CYUserName @"accountsdf"
#define? CYUserName 10086
#define? CYUserName [UIScreen mainScreen].bounds.size.height
2.const
2.1 const使用規(guī)范
NSString *const str=@"account";
int const a = 100;
2.2 const功能
1.僅僅只是用來修飾右邊的變量(基本變量,指針變量,對象變量)
2.const修飾的變量只讀,是(只讀)變量
2.3 使用場景
1.定義一個全局的只讀變量
NSString *const str=@"account";
2.在方法中定義只讀參數(shù)
//const修飾對象
-(void)text:(NSString * const)str{
}
3.宏和const的區(qū)別
1.編譯時(shí)刻:宏:預(yù)編譯 ;const:編譯時(shí)刻
2.編譯檢查:宏:不會檢查錯誤; const: 會檢查錯誤
3.宏的好處:可以定義代碼
4.宏的壞處:編譯時(shí)間過長,因此常用的字符串使用const修飾
4.static
4.1 static作用
1.修飾局部變量:延長生命周期,只要程序運(yùn)行局部變量就會一直存在,只分配一次內(nèi)存,只會在程序啟動時(shí)執(zhí)行
2.修改全局變量:只會修改全局變量的作用域,表示只能是當(dāng)前文件內(nèi)使用
4.2 static使用
1.定義靜態(tài)全局變量
static int staticInt=1;//定義靜態(tài)全局變量
2.定義靜態(tài)局部變量
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event{
static int i=0;
i++;
NSLog(@"%d",i);
XJHLog(@"%d",i);
}
5.extern
5.1 extern作用
1.聲明一個全局變量,不能定義變量
注意:extern修飾的變量不能初始化
5.2 extern使用
使用場景:一般用于聲明全局變量
在文件a中可以定義如下全局變量
int about=3;//這里a是全局變量,在程序啟動時(shí)就分配內(nèi)存,可以跨文件使用a,比如在AppDelegate.m中可以通過 extern int a;來聲明使用a;UIKIT_EXTERN是extern的另一種寫法
在文件b 中可以聲明文件a中的全局變量about,從而跨實(shí)現(xiàn)文件使用數(shù)據(jù),如下
extern int about;//UIKIT_EXTERN是extern的蘋果官方寫法
6.static和extern總結(jié)
static修飾的全局變量只能在文件內(nèi)使用,extern用于聲明全局變量可以跨文件使用數(shù)據(jù);static修飾的局部變量可以延長生命周期;extern聲明的變量只讀.