IOS常量總結(jié) const

1. const

這個單詞翻譯成中文是“常量”的意思逃片。在程序中我們知道“常量”的值是不能變的兴想,固定的扔茅。所以const關(guān)鍵字的作用就呼之欲出了:

(1) const用來修飾右邊的基本變量或指針變量

(2) 被修飾的變量只讀傅联,不能被修改

下面舉個最簡單的例子:

//聲明一個int類型的變量a,變量初始化值為10浩蓉,并且變量a左邊有一個const關(guān)鍵字修飾

??? int const a = 10;//因為變量a被const修飾派继,就成為了只讀,不能被修改賦值了捻艳,所以下面這行代碼是錯誤的
??? a = 20;?? //錯誤代碼
??? NSLog(@"常量a ==%d",a);
??? const int b = 10;? //上面第一句代碼和這句代碼是等價的驾窟,都是修飾變量a讓其只讀
??? b = 30;?? //錯誤代碼
??? NSLog(@"常量b ==%d",b);

int const *p? // *p只讀 ;p變量

int* const p // *p變量 ; p只讀

const int * constp //p和*p都只讀

int const * const p? //p和*p都只讀

總結(jié):判斷*p 和p是只讀還是變量,關(guān)鍵是看const在誰前面

const的常用用法:

//定義一個全局只讀變量

NSString * const Kname = @"appkey";

//static修飾后此全局變量只能本文件訪問

static NSString *key = @"hahaha”;

2.static

這個單詞翻譯成中文是“靜態(tài)”的意思认轨。關(guān)從字面上理解還真沒法跟他的作用關(guān)聯(lián)起來绅络,下面我們直接先看他的作用:

(1)修飾局部變量

保證局部變量永遠只初始化一次,在程序的運行過程中永遠只有一份內(nèi)存, 生命周期類似全局變量了恩急,但是作用域不變杉畜。這句話怎么理解呢?還是以代碼例子來講解吧衷恭。

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

??//聲明一個局部變量i

?staticinti = 0;

??//每次點擊view來到這個方法時讓i自增

??i ++;

??//打印結(jié)果

??NSLog(@"i=%d",i);

}

輸出日志如下:

2016-10-26 15:07:34.276 fff[2817:175155] i=1

2016-10-26 15:07:35.347 fff[2817:175155] i=2

2016-10-26 15:07:35.761 fff[2817:175155] i=3

2016-10-26 15:07:36.057 fff[2817:175155] i=4

2016-10-26 15:07:36.415 fff[2817:175155] i=5

....

上面日志中可以看到i的值一直在自增此叠。什么,它不是每次進去都被初始化賦值為0了么随珠,怎么能累加呢灭袁。這就是關(guān)鍵字static修飾的局部變量的作用,讓局部變量永遠只初始化一次窗看,一份內(nèi)存茸歧,生命周期已經(jīng)跟全局變量類似了,只是作用域不變烤芦。

(2)修飾全局變量

使全局變量的作用域僅限于當(dāng)前文件內(nèi)部,即當(dāng)前文件內(nèi)部才能訪問該全局變量析校。

iOS中在一個文件聲明的全局變量构罗,工程的其他文件也是能訪問的,但是我又不想讓其他文件訪問智玻,這時就可以用static修飾它了遂唧,比較典型的是使用GCD一次性函數(shù)創(chuàng)建的單例,全局變量基本上都會用static修飾吊奢。

下面是一個GCD一次函數(shù)創(chuàng)建的單利

@implementation LoginTool

//static修飾全局變量盖彭,讓外界文件無法訪問

static LoginTool *_sharedManager = nil;

+ (LoginTool *)sharedManager {

???staticdispatch_once_t oncePredicate;

??dispatch_once(&oncePredicate, ^{

????_sharedManager = [[self alloc] init];

??});

??return_sharedManager;

}

(3)修飾函數(shù)

static修飾函數(shù)時,被修飾的函數(shù)被稱為靜態(tài)函數(shù)页滚,使得外部文件無法訪問這個函數(shù)召边,僅本文件可以訪問。這個在oc語言開發(fā)中幾乎很少用裹驰,c語言倒是能看到一些影子隧熙,所以不詳細探討。

3.extern

這個單詞翻譯過來是“外面的幻林、外部的”贞盯。顧名思義,它的作用是聲明外部全局變量沪饺。這里需要特別注意extern只能聲明躏敢,不能用于實現(xiàn)。

在開發(fā)中整葡,我們通常會單獨抽一個類來管理一些全局的變量或常量件余,下面來看看逼格比較高的一種做法:

我們可以在.h文件中extern聲明一些全局的常量

//聲明一些全局常量

extern NSString * const baseUrl;

extern NSInteger const count;

然后在.m文件中去實現(xiàn)

#import <Foundation/Foundation.h>

//實現(xiàn)

NSString * const baseUrl = @"https//www.reibang.com";

NSInteger const count = 3;

這樣,只要導(dǎo)入頭文件,就可以全局的使用定義的變量或常量蛾扇。

參考自:https://www.jb51.net/article/97241.htm

指針基礎(chǔ):http://www.reibang.com/p/5b2c7bbc32d6

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末攘烛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子镀首,更是在濱河造成了極大的恐慌坟漱,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件更哄,死亡現(xiàn)場離奇詭異芋齿,居然都是意外死亡,警方通過查閱死者的電腦和手機成翩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門觅捆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人麻敌,你說我怎么就攤上這事栅炒。” “怎么了术羔?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵赢赊,是天一觀的道長。 經(jīng)常有香客問我级历,道長释移,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任寥殖,我火速辦了婚禮玩讳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嚼贡。我一直安慰自己熏纯,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布粤策。 她就那樣靜靜地躺著豆巨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掐场。 梳的紋絲不亂的頭發(fā)上往扔,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音熊户,去河邊找鬼萍膛。 笑死,一個胖子當(dāng)著我的面吹牛嚷堡,可吹牛的內(nèi)容都是我干的蝗罗。 我是一名探鬼主播艇棕,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼串塑!你這毒婦竟也來了沼琉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤桩匪,失蹤者是張志新(化名)和其女友劉穎打瘪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傻昙,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡闺骚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了妆档。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片僻爽。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贾惦,靈堂內(nèi)的尸體忽然破棺而出胸梆,到底是詐尸還是另有隱情,我是刑警寧澤须板,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布碰镜,位于F島的核電站,受9級特大地震影響逼纸,放射性物質(zhì)發(fā)生泄漏洋措。R本人自食惡果不足惜济蝉,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一杰刽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧王滤,春花似錦贺嫂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至踱稍,卻和暖如春曲饱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背珠月。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工扩淀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人啤挎。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓驻谆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胜臊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354