第一章 熟悉Objective-C(EffectiveObjective-C讀書筆記)

1.在類的頭文件中盡量少引入其他頭文件

a.多使用向前聲明@class

b.無法使用向前聲明的(比如某個類需要遵循一項協議),可以使用分類

2.多使用字面量語法,少用與之等價的方法

優(yōu)點:簡單,易理解,減少代碼出錯率(如果值為nil會報異常)

3.多用類型常量, 少用#define預處理指令

#define ANIMATION_DURATION 0.3

缺點:1>沒有類型提示, 2>如果放在頭文件,所以包含該頭文件的 文件都會執(zhí)行替換

static const NSTimeInterval kAnimationDuration = 0.3

注:常量命名如果局限與某個實現文件用k開頭, ?若常量在類之外可見,則通常用類名為前綴

只是編譯單元之內用,放在.m ? ? 如果其他被import的類也要使用,放在.h

類似通知名這類字符串,也可定義為常量

//In the header file 聲明

extern NSString *const EOCStringConstant; //EOCStringConstant是常量, 這個常量是個指針,指向NSString對象

//In the implementation file 實現

NSString *const EOCStringConstant = @"VALUE";

注意:在使用extern的時候,常量名要使用類名作為前綴, UIKit就是按照這種方式來命名的,如UIApplicationDidEnterxxx

extern 編譯器看到extern關鍵字,就能明白如何在此類頭文件的代碼中處理該常量了

.這個關鍵字是要告訴編譯器,在全局符號表中將會有一個名叫EOCStringConstant的符號

也就是說,編譯器無需查看定義,即允許代碼使用此常量,因為它知道,當鏈接成二進制文件后,肯定能找到該常量

編譯后,會在"數據段data section"為字符串分配存儲空間

const 常量,不可修改. ?注意const的位置, ?常量定義應從右->左解讀

static 只限編譯單元可用

4.用枚舉標識狀態(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

};

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容