const渤滞、static和extern的正確使用方式


我們?cè)诳匆恍┐笈5牡谌綍r(shí),里面會(huì)出現(xiàn)很多const榴嗅、static和extern,尤其是const和static陶舞,const和extern的結(jié)合使用嗽测,直接令很多小伙伴懵逼了,今天就詳細(xì)講解一下這三個(gè)關(guān)鍵字的正確使用方式肿孵。

一唠粥、const

const的作用和宏是很類(lèi)似的,其實(shí)停做,蘋(píng)果是不推薦我們使用宏的晤愧,它更喜歡我們使用const,于是乎蛉腌,在swift中宏就被拋棄了官份,我們只能使用const。

在這里簡(jiǎn)單聊一下const和宏的區(qū)別:

1.編譯時(shí)刻? 宏:預(yù)編譯 const:編譯

2.編譯檢查? 宏沒(méi)有編譯檢查,不會(huì)報(bào)編譯錯(cuò)誤烙丛,只是替換舅巷;const有編譯檢查,會(huì)報(bào)編譯錯(cuò)誤

3.宏的好處? 宏能定義一些函數(shù)河咽,方法,但是const不可以

4.宏的壞處? 大量使用宏,會(huì)導(dǎo)致預(yù)編譯時(shí)間過(guò)長(zhǎng)钠右。

const有兩個(gè)作用:

1.修飾右邊的基本變量和指針變量;

2.被const修飾的變量只讀,也就是只能獲取,不能修改忘蟹。

const的使用場(chǎng)景:

1.修飾全局變量? ==>全局只讀變量? ==>? 代替宏

2.修飾方法中的參數(shù)

代碼如下:

NSString * const gender = @"gender";

[[NSUserDefaults standardUserDefaults] objectForKey:gender];



二飒房、static

static有兩個(gè)作用:

1.修飾局部變量:被static修飾的局部變量搁凸,可以延長(zhǎng)生命周期,生命周期跟整個(gè)應(yīng)用程序一致狠毯;被static修飾的局部變量坪仇,只會(huì)分配一次內(nèi)存。

代碼如下:

- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event {

static int i = 0;

i++;

NSLog(@"%d", i);

}

2.修飾全局變量:被static修飾的全局變量垃你,作用域會(huì)修改椅文,生命周期不會(huì)改,只能在當(dāng)前文件下使用。

代碼如下:

static int m = 0;


三惜颇、extern

extern作用:聲明外部全局變量皆刺。

extern工作原理:先會(huì)去當(dāng)前文件下查找有沒(méi)有對(duì)應(yīng)全局變量,如果沒(méi)有,才會(huì)去其他文件查找。


四凌摄、static和const的結(jié)合使用

static,const結(jié)合使用的作用:聲明一個(gè)只讀的全局靜態(tài)變量羡蛾。

開(kāi)發(fā)使用場(chǎng)景:在一個(gè)文件中經(jīng)常使用的字符串常量,可以使用static與const組合锨亏。

代碼如下:

static NSString * const name = @"name";

[[NSUserDefaults standardUserDefaults] setObject:@"123" forKey:name];



五痴怨、extern和const的結(jié)合使用

使用場(chǎng)景:在多個(gè)文件中經(jīng)常使用的同一個(gè)字符串常量,可以使用extern與const組合器予。

開(kāi)發(fā)時(shí)有個(gè)規(guī)定浪藻,為了避免重復(fù)報(bào)錯(cuò),全局變量不能定義在自己的類(lèi)中乾翔,我們需要自己創(chuàng)建一個(gè)全局文件管理全局東西爱葵。

創(chuàng)建一個(gè)全局類(lèi)GlobelConst。

代碼如下:

#import<Foundation/Foundation.h>

extern NSString * const discover_name;

extern NSString * const home_name;


#import "GlobelConst.h"

//定義整個(gè)項(xiàng)目中的全局變量

/**********? 發(fā)現(xiàn)模塊? **********/

NSString * const discover_name = @"name";

/**********? 首頁(yè)模塊? **********/

NSString * const home_name = @"name";

[[NSUserDefaults standardUserDefaults] setObject:@"123" forKey:discover_name];

[[NSUserDefaults standardUserDefaults] objectForKey:discover_name];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末反浓,一起剝皮案震驚了整個(gè)濱河市萌丈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雷则,老刑警劉巖辆雾,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異月劈,居然都是意外死亡度迂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)艺栈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)英岭,“玉大人,你說(shuō)我怎么就攤上這事湿右∽缑茫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吭狡。 經(jīng)常有香客問(wèn)我尖殃,道長(zhǎng),這世上最難降的妖魔是什么划煮? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任送丰,我火速辦了婚禮,結(jié)果婚禮上弛秋,老公的妹妹穿的比我還像新娘器躏。我一直安慰自己,他們只是感情好蟹略,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布登失。 她就那樣靜靜地躺著,像睡著了一般挖炬。 火紅的嫁衣襯著肌膚如雪揽浙。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天意敛,我揣著相機(jī)與錄音馅巷,去河邊找鬼。 笑死草姻,一個(gè)胖子當(dāng)著我的面吹牛钓猬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播碴倾,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼逗噩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了跌榔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捶障,失蹤者是張志新(化名)和其女友劉穎僧须,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體项炼,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡担平,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锭部。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暂论。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拌禾,靈堂內(nèi)的尸體忽然破棺而出取胎,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布闻蛀,位于F島的核電站匪傍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏觉痛。R本人自食惡果不足惜役衡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望薪棒。 院中可真熱鬧手蝎,春花似錦、人聲如沸俐芯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)泼各。三九已至鞍时,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扣蜻,已是汗流浹背逆巍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留莽使,地道東北人锐极。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像芳肌,于是被迫代替她去往敵國(guó)和親灵再。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • static 修飾局部變量 讓局部變量只初始化一次 局部變量在程序中只有一份內(nèi)存 并不會(huì)改變局部變量的作用域亿笤,僅僅...
    大沖哥閱讀 1,345評(píng)論 0 1
  • ### const,static,extern簡(jiǎn)介 ### 一翎迁、const與宏的區(qū)別(面試題): * `const...
    老騷鵝閱讀 653評(píng)論 0 7
  • 一、const與宏的區(qū)別(面試題): const簡(jiǎn)介:之前常用的字符串常量净薛,一般是抽成宏汪榔,但是蘋(píng)果不推薦我們抽成宏...
    Lucky丶晴閱讀 206評(píng)論 0 1
  • const,static,extern簡(jiǎn)介一、const與宏的區(qū)別(面試題):const簡(jiǎn)介:之前常用的字符串常量...
    BinaryRo閱讀 248評(píng)論 0 1
  • 一肃拜、const與宏的區(qū)別: const簡(jiǎn)介:之前常用的字符串常量痴腌,一般是抽成宏,但是蘋(píng)果不推薦我們抽成宏燃领,推薦我們...
    金約21依代閱讀 228評(píng)論 0 1