iOS的const,enum以及#define(宏定義)

如果有不對(duì)的地方請(qǐng)多多指正:

1.宏在編譯開始之前就會(huì)被替換掉,而const知識(shí)變量進(jìn)行修飾;

2.宏可以定義一些函數(shù)方法,const不能;

3.宏在編譯時(shí)只替換不做檢查不報(bào)錯(cuò),也就是說有重復(fù)定義的問題,而const會(huì)編譯檢查,會(huì)報(bào)錯(cuò);

4.隨著項(xiàng)目組建增大,過多的宏定義會(huì)影響項(xiàng)目的編譯速度,盡量多使用const,enum來代替宏定義#define

所以先考慮使用static方式聲明const來代替宏定義,const不能滿足的情況再考慮使用宏定義



例子:

static NSString *const CLASSNAME = @“Hello”; 代替? #define CLASSNAME @“Hello”;

static NSString CGFloat CLASSWIDTH = 10.0;? ? ? ? 代替? #define CLASSWIDTH 10.0;

typedef NS_ENUM(NSInteger,TestEnum){

INT_CONST = 1;

}

代替 ? #define INT_CONST 1;



//全局變量

//地址不能改,值可以改,

const NSString *constString1 =? @“a const NSString *string ”;

NSString const *constString2 =? @“a const NSString const *string”;

//外部使用需要extern字段,比如在VC1.m文件中定義了全局變量,在其他VC中使用需要:

extern NSString *constString1;NSLog(@“ constString1 : %@”,constString1);

//地址能改,值不可以改

NSString? *const? constString3? =? @“a const NSString *const string”



//局部變量

//作用域只在本文件中,在其他類使用需要引用定義的類

static const NSString *staticConstSring1? = @“a static const NSString *string”;

static NSString const *staticConstSring2? = @“a static NSString const*string”;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.OC里用到集合類是什么? 基本類型為:NSArray,NSSet以及NSDictionary 可變類型為:NS...
    輕皺眉頭淺憂思閱讀 1,469評(píng)論 0 3
  • static 修飾局部變量 讓局部變量只初始化一次 局部變量在程序中只有一份內(nèi)存 并不會(huì)改變局部變量的作用域,僅僅...
    大沖哥閱讀 1,474評(píng)論 0 1
  • 307、setValue:forKey和setObject:forKey的區(qū)別是什么? 答:1, setObjec...
    AlanGe閱讀 1,708評(píng)論 0 1
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,579評(píng)論 30 472
  • ### const,static,extern簡(jiǎn)介 ### 一、const與宏的區(qū)別(面試題): * `const...
    老騷鵝閱讀 714評(píng)論 0 7

友情鏈接更多精彩內(nèi)容