iOS 有效編寫高質(zhì)量Objective-C方法

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來定義

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容