《Effective Objective-C 2.0 編寫高質(zhì)量iOS與OS X的52個(gè)有效方法》讀書總結(jié)
第一章 熟悉的Objective-C
第4條:多用類型常量圈暗,少用#define預(yù)處理指令
編寫代碼時(shí)經(jīng)常要定義常量。
預(yù)處理指令 #define
#define ANIMATION_DURATION 0.3
這樣定義出來的常量沒有類型信息勇哗。
特點(diǎn):“持續(xù)”(duration)
預(yù)處理過程會(huì)把遇到的所有ANIMATION_DURATION一律替換為0.3欲诺,若此指令出現(xiàn)在某個(gè)頭文件中扰法,那所有引入這個(gè)頭文件的代碼塞颁,都會(huì)被替換祠锣。
類型常量 static const
static const NSTimeInterval KAnimationDuration = 0.3;
用此方法定義的常量包含類型信息,清楚地描述了常量的含義澡腾。
常量命名:
若常量局限于某“編譯單元”即“實(shí)現(xiàn)文件”(implementation file)之內(nèi)蛋铆,則在前面加字幕k刺啦;
若常量在類之外可見玛瘸,則以類名為前綴糊渊,避免名稱沖突。
常量位置:
盡量不重要在頭文件聲明預(yù)處理指令宗兼,避免常量名稱出現(xiàn)沖突殷绍;
static 修飾符表示該變量?jī)H在定義次變量的編譯單元可見茶行。若聲明時(shí)不加static畔师,編譯器會(huì)創(chuàng)建一個(gè)外部符號(hào)(external symbol),若另一個(gè)編譯單元聲明同名,會(huì)報(bào)錯(cuò)献幔。
聲明外界可見,在頭文件中使用extern聲明全局變量恃泪,在相關(guān)實(shí)現(xiàn)文件中定義其值
// In the header file
extern NSString *const EOCStringConstant;
// In the implementation file
NSString *const EOCStringConstant = @"VALUE";