iOS中關(guān)于宏定義與常量的使用

現(xiàn)在在做的這個(gè)產(chǎn)品,由于需求不斷的添加,工程越來(lái)越大,編譯速度是越來(lái)越慢。之前就看過(guò)帖子:

使用宏定義過(guò)多的話,隨著工程越來(lái)越大,編譯速度會(huì)越來(lái)越慢。

當(dāng)時(shí)也想過(guò)替換成常量,但是當(dāng)時(shí)的替換方法有問(wèn)題,導(dǎo)致編譯的時(shí)候有很多重復(fù)的變量,替換失敗了,就不了了之,直到最近,每次編譯的時(shí)間實(shí)在是超出了我的容忍極限,于是下定決心,一定要替換掉。又從網(wǎng)上查看帖子,從簡(jiǎn)書上看到了這篇文章【如何正確使用const,static,extern】|那些人追的干貨,仔細(xì)閱讀,研究,詢問(wèn)博主之后,終于塵埃落定,替換了之前使用宏定義的常量。

現(xiàn)在獻(xiàn)上一段代碼:

static CGFloat const kLogoImageWidth = 100; //logo寬度
static CGFloat const kLogoImageHeight = 100; //logo寬度
static CGFloat const kLogoImageY = 110;
static CGFloat const kBtnHeight = 40;
static CGFloat const kPadding = 30;
static CGFloat const kWeixinTopPadding = 15;
static CGFloat const kWeiboLoginBottom = 230;
#define kScaleSpace(designSpace) ((designSpace)*(SCREEN_HEIGHT/667.0)) //根據(jù)iphone6 的設(shè)計(jì)稿計(jì)算縮放高度

替換的時(shí)候一定要注意數(shù)據(jù)類型。對(duì)于 CGFloat 和 NSString類型替換的時(shí)候也是一樣的。代碼如下:

static CGFloat const kBottomHeight = 50.0; //底部視圖高度
static NSString   *const CELL_TITLE_KEY = @"CELL_TITLE_KEY";
static NSString   *const CELL_CONTENT_KEY = @"CELL_CONTENT_KEY";

替換完成之后代碼的編譯速度確實(shí)上去了,現(xiàn)在編譯快了。希望對(duì)正在為編譯速度慢感到困惑的您有所幫助!

補(bǔ)充說(shuō)明:以上的類型常量替換宏的情況,只是適用于單個(gè)文件的情況。如果是多個(gè)文件共享的常量,蘋果推薦的這樣的方式

  • UserInfoModelConstants.h
 extern NSString *const BKUSER_AGE_KEY         ;
 extern NSString *const BKUSER_TELPHONE_KEY    ;
 extern NSString *const BKUSER_ADDRESS_KEY     ;
 extern NSString *const BKUSER_BRIEF_KEY       ;
  • UserInfoModelConstants.m
 NSString *const BKUSER_AGE_KEY         =     @"XXXXX.userAge";
 NSString *const BKUSER_TELPHONE_KEY    =     @"XXXXX.telphoneNO";
 NSString *const BKUSER_ADDRESS_KEY     =     @"XXXXX.address"; 
 NSString *const BKUSER_BRIEF_KEY       =     @"XXXXX.brief";

在需要使用共享常量的文件中引入UserInfoModelConstants.h即可。如果還有什么不足的地方希望大家指出。

以上只是我在閱讀別的帖子之后的一點(diǎn)體驗(yàn)和總結(jié),如果有疑問(wèn)歡迎微博@藍(lán)光95_176探討!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 學(xué)習(xí)基礎(chǔ)知識(shí),看了兩篇文章,記個(gè)筆記1、【如何正確使用const,static,extern】|那些人追的干貨2、...
    John_LS閱讀 9,821評(píng)論 1 28
  • C中的預(yù)編譯宏定義 2009-02-10 作者: infobillows 來(lái)源:網(wǎng)絡(luò) 在將一個(gè)C源程序轉(zhuǎn)換為可執(zhí)行...
    白水灬煮一切閱讀 1,640評(píng)論 0 5
  • __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,358評(píng)論 0 6
  • 中學(xué)學(xué)過(guò)《鄭伯克段于鄢》,講的是鄭莊公的母親不喜歡他,暗地里和莊公的弟弟密謀造反,被莊公給打敗的故事。 ...
    82082的奮斗史閱讀 153評(píng)論 0 1
  • 和好友聊了關(guān)于如何在社交中把握主動(dòng)性。交往分為三種,一你需要我的幫忙,二我需要你的幫忙,三是純粹聊天想認(rèn)識(shí) 首先一...
    夢(mèng)想家小馬爺閱讀 398評(píng)論 0 0