Objective-C 預(yù)處理 static const extern的正確使用姿勢

作者:周輝
All rights reserved.

多用類型常量读整,少用 #define 預(yù)處理指令


const

const最好理解咱娶,修飾的東西不能被修改
指針類型根據(jù)位置的不同可以理解成3種情況:

  1. 常量指針
// 初始化之后不能賦值强品,指向的對象可以是任意對象,對象可變的榛。
NSString *const pt1;
  1. 指向常量的指針
// 初始化之后可以賦值,即指向別的常量夫晌,指針本身的值可以修改,指向的值不能修改
const NSString *pt2;
  1. 指向常量的常量指針
const NSString * const pt3;

extern

全局變量的定義

//x .h 聲明
extern const NSString *AA;
//x .m 定義
const NSString *AA = @"abc";
// 調(diào)用
#import "x.h"
// 或者再次申明
extern const NSString *AA;

static

static 關(guān)鍵字對變量的作用域進(jìn)行了限制晓淀,使得變量僅在源文件內(nèi)有效。


static 與 const 結(jié)合

  • static與const作用:聲明一個只讀的靜態(tài)變量
  • 在一個文件中經(jīng)常使用的字符串常量盏档,可以使用static與const組合
  • 開發(fā)中常用static修飾全局變量,只改變作用域
  • 為什么要改變?nèi)肿兞孔饔糜颍?/li>
  • 防止重復(fù)聲明全局變量
  • 開發(fā)中聲明的全局變量,有些不希望外界改動蜈亩,只允許讀取
// 聲明一個靜態(tài)的全局只讀常量
static const int a = 20;
  • static和const聯(lián)合的作用:聲明一個靜態(tài)的全局只讀常量
  • iOS中staic和const常用使用場景,是用來代替宏稚配,把一個經(jīng)常使用的字符串常量,定義成靜態(tài)全局只讀變量
// 開發(fā)中經(jīng)常拿到key修改值药有,因此用const修飾key,表示key只讀,不允許修改
static NSString * const key = @"name";

// 如果 const修飾 *key1,表示*key1只讀愤惰,key1還是能改變
static NSString const *key1 = @"name";
  • 如果一個變量既聲明為static苇经,又聲明為const宦言,那么編譯器根本不會創(chuàng)建符號,而是會向#define預(yù)處理指令一樣奠旺,把所有遇到的變量都替換為常值。
  • 用此方法定義的常量帶有類型信息响疚。

一般用法

// FCAnimatedView.h
#import <UIKit/UIKit.h>

@interface FCAnimatedView : UIView
- (void)animate;
@end

// FCAnimatedView.m
#import "FCAnimatedView.h"

static const NSTimeInterval kAnimationDuration = 0.3;

@implementation FCAnimatedView
- (void)animate {
    [UIViewanimateWithDuration:kAnimationDuration
                               animations:^() {
                                      //  Perform animations
                               }];
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市忿晕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖鸦采,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異渔伯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)锣吼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玄叠,“玉大人,你說我怎么就攤上這事诸典。” “怎么了狐粱?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肌蜻。 經(jīng)常有香客問我互墓,道長蒋搜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任豆挽,我火速辦了婚禮,結(jié)果婚禮上帮哈,老公的妹妹穿的比我還像新娘。我一直安慰自己娘侍,他們只是感情好咖刃,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布嚎杨。 她就那樣靜靜地躺著,像睡著了一般氧腰。 火紅的嫁衣襯著肌膚如雪翠胰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機(jī)與錄音斤富,去河邊找鬼。 笑死满力,一個胖子當(dāng)著我的面吹牛焕参,可吹牛的內(nèi)容都是我干的油额。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼潦嘶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掂僵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤锰蓬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芹扭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體麻顶,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辅肾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了轮锥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡交胚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蝴簇,到底是詐尸還是另有隱情,我是刑警寧澤熬词,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布旁钧,位于F島的核電站,受9級特大地震影響歪今,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寄猩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦锦爵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽状答。三九已至刀崖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蒲跨,已是汗流浹背译断。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工孙咪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人巡语。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像男公,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子枢赔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

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

  • static 修飾局部變量 讓局部變量只初始化一次 局部變量在程序中只有一份內(nèi)存 并不會改變局部變量的作用域,僅僅...
    大沖哥閱讀 1,359評論 0 1
  • 一. const 與 宏的區(qū)別 編譯時刻: 宏是預(yù)編譯(編譯之前處理), const是編譯階段處理 編譯檢查: 宏...
    LZM輪回閱讀 595評論 0 2
  • 一踏拜、const與宏的區(qū)別(面試題): const簡介:之前常用的字符串常量,一般是抽成宏速梗,但是蘋果不推薦我們抽成宏...
    Lucky丶晴閱讀 209評論 0 1
  • 漸漸長大襟齿,似乎要背負(fù)的東西越來越多了。以前好像沒有那么重要的事情枕赵,在一夜之間都變得極其重要起來。好累拷窜。 睡前翻了兩...
    公子F閱讀 741評論 0 1
  • JDBC常見組件 DriverManager :這個類管理數(shù)據(jù)庫驅(qū)動程序 Driver:此接口處理與數(shù)據(jù)庫服務(wù)器通...
    尉昌達(dá)閱讀 195評論 0 0