1.在類的頭文件中盡量少引用其他頭文件
使用“向前聲明”方法
@classname;
2.多用字面量,少用與之等價的方法
使用字面量要點(diǎn)
- 對于字符串、數(shù)值、數(shù)組、字典,應(yīng)盡量使用字面量創(chuàng)建
- 訪問數(shù)組或字典,應(yīng)盡量使用下標(biāo)發(fā)來訪問 例如:arr[1] dic[@”key1”]
- 創(chuàng)建字面量時,需要保證值中沒有nil對象,否則會報(bào)異常
3.多用類型常量,少用#define預(yù)處理指令
- 對于常量的命名,一般用法是:
如果常量只是作用于當(dāng)前的編譯單元(就是當(dāng)前的.m實(shí)現(xiàn)類),那么應(yīng)該在常量的名稱前加上k
如果常量還要作用于外部,需要以當(dāng)前的類名為前綴
常量一定要用static const兩個一起定義,因?yàn)槲覀儽緛砭褪窍M且粋€常量,不能夠被更改
還有一個原因,因?yàn)槲覀兂A恐蛔饔糜诋?dāng)前的.m類,如果不加上static,那么編譯器在編譯我們當(dāng)前的類時,會給它加上一個外部符號(external symbol),如果其他類也定義了一個相同的同名變量,那么編譯器就會報(bào)錯
4.在對象內(nèi)部盡量直接訪問實(shí)例變量
- 在對象之外,我們知道總是通過屬性(property)來對實(shí)例變量進(jìn)行操作,那么在實(shí)例內(nèi)部應(yīng)該怎么做呢? 強(qiáng)烈建議在除了在懶加載中,其他情況下,都應(yīng)該是:
在讀取變量時,都應(yīng)該采用直接訪問的形式(_變量名),在設(shè)置實(shí)例變量時通過屬性來設(shè)置
5.枚舉
在Foundation框架中,定義了一些輔助的宏,在定義枚舉時,我們經(jīng)常使用這些宏來指定枚舉的底層數(shù)據(jù)
typedef NS_ENUM(NSUInteger, PPSConnectionState){
PPSConnectionStateDisconnected,
PPSConnectionStateConnecting,
PPSConnectionStateConnected,
};
typedef NS_OPTION(NSUInteger, UIViewAutoresizing){
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
...
};
我們看到上面有兩種方式的宏,那么我們應(yīng)該怎樣來選擇呢
凡是需要以位或操作來組合枚舉的都應(yīng)使用NS_OPTION來定義
凡是枚舉不需要組合,都應(yīng)該使用NS_ENUM來定義