在iOS開(kāi)發(fā)中,經(jīng)常用到宏定義割坠,或用const修飾一些數(shù)據(jù)類(lèi)型齐帚,經(jīng)常有開(kāi)發(fā)者不知怎么正確使用,導(dǎo)致項(xiàng)目中亂用宏與const修飾彼哼。
區(qū)別:
- define在預(yù)處理階段進(jìn)行替換对妄,const常量在編譯階段使用
- 宏不做類(lèi)型檢查,僅僅進(jìn)行替換沪羔,const常量有數(shù)據(jù)類(lèi)型饥伊,會(huì)執(zhí)行類(lèi)型檢查
- define不能調(diào)試,const常量可以調(diào)試
- define定義的常量在替換后運(yùn)行過(guò)程中會(huì)不斷地占用內(nèi)存蔫饰,而const定義的常量存儲(chǔ)在數(shù)據(jù)段只有一份copy琅豆,效率更高
- define可以定義一些簡(jiǎn)單的函數(shù),const不可以
不要用預(yù)處理指令定義常量篓吁。 這樣定義出來(lái)的常量不含類(lèi)型信息