1.在類的頭文件中盡量少引入其他頭文件
a.多使用向前聲明@class
b.無法使用向前聲明的(比如某個類需要遵循一項協(xié)議),可以使用分類
2.多使用字面量語法,少用與之等價的方法
優(yōu)點:簡單,易理解,減少代碼出錯率(如果值為nil會報異常)
3.多用類型常量, 少用#define預(yù)處理指令
#define ANIMATION_DURATION 0.3
缺點:1>沒有類型提示, 2>如果放在頭文件,所以包含該頭文件的 文件都會執(zhí)行替換
static const NSTimeInterval kAnimationDuration = 0.3
注:常量命名如果局限與某個實現(xiàn)文件用k開頭, ?若常量在類之外可見,則通常用類名為前綴
只是編譯單元之內(nèi)用,放在.m ? ? 如果其他被import的類也要使用,放在.h
類似通知名這類字符串,也可定義為常量
//In the header file 聲明
extern NSString *const EOCStringConstant; //EOCStringConstant是常量, 這個常量是個指針,指向NSString對象
//In the implementation file 實現(xiàn)
NSString *const EOCStringConstant = @"VALUE";
注意:在使用extern的時候,常量名要使用類名作為前綴, UIKit就是按照這種方式來命名的,如UIApplicationDidEnterxxx
extern 編譯器看到extern關(guān)鍵字,就能明白如何在此類頭文件的代碼中處理該常量了
.這個關(guān)鍵字是要告訴編譯器,在全局符號表中將會有一個名叫EOCStringConstant的符號
也就是說,編譯器無需查看定義,即允許代碼使用此常量,因為它知道,當(dāng)鏈接成二進(jìn)制文件后,肯定能找到該常量
編譯后,會在"數(shù)據(jù)段data section"為字符串分配存儲空間
const 常量,不可修改. ?注意const的位置, ?常量定義應(yīng)從右->左解讀
static 只限編譯單元可用
4.用枚舉標(biāo)識狀態(tài),選項,狀態(tài)碼
typedefNS_ENUM(NSUInteger,EOCConnectionState) {
EOCConnectionStateDisconnected,
EOCConnectionStateConnecting,
EOCConnectionStateConnected
};
typedefNS_OPTIONS(NSUInteger, EOCPermittedDirection) {
EOCPermittedDirectionLeft =1<<0,
EOCPermittedDirectionDown =1<<1,
EOCPermittedDirectionRight=1<<2,
EOCPermittedDirectionUp? =1<<3
};