【課程內容】
第1章 熟悉Objective-C
第1條:了解Objective-C語言的起源??
第2條:在類的頭文件中盡量少引入其他頭文件??
第3條:多用字面量語法,少用與之等價的方法??
第4條:多用類型常量,少用#define預處理指令??
第5條:用枚舉表示狀態、選項、狀態碼??
第2章 對象、消息、運行期
第6條:理解“屬性”這一概念??
第7條:在對象內部盡量直接訪問實例變量??
第8條:理解“對象等同性”這一概念??
第9條:以“類族模式”隱藏實現細節??
第10條:在既有類中使用關聯對象存放自定義數據??
第11條:理解objc_msgSend的作用??
第12條:理解消息轉發機制??
第13條:用“方法調配技術”調試“黑盒方法”??
第14條:理解“類對象”的用意??
第3章 接口與API設計
第15條:用前綴避免命名空間沖突??
第16條:提供“全能初始化方法”??
第17條:實現description方法??
第18條:盡量使用不可變對象??
第19條:使用清晰而協調的命名方式??
第20條:為私有方法名加前綴??
第21條:理解Objective-C錯誤模型??
第22條:理解NSCopying協議??
第4章 協議與分類
第23條:通過委托與數據源協議進行對象間通信??
第24條:將類的實現代碼分散到便于管理的數個分類之中??
第25條:總是為第三方類的分類名稱加前綴??
第26條:勿在分類中聲明屬性??
第27條:使用“class-continuation分類”隱藏實現細節??
第28條:通過協議提供匿名對象??
第5章 內存管理
第29條:理解引用計數??
第30條:以ARC簡化引用計數??
第31條:在dealloc方法中只釋放引用并解除監聽??
第32條:編寫“異常安全代碼”時留意內存管理問題??
第33條:以弱引用避免保留環??
第34條:以“自動釋放池塊”降低內存峰值??
第35條:用“僵尸對象”調試內存管理問題??
第36條:不要使用retainCount??
第6章 塊與大中樞派發
第37條:理解“塊”這一概念??
第38條:為常用的塊類型創建typedef??
第39條:用handler塊降低代碼分散程度??
第40條:用塊引用其所屬對象時不要出現保留環??
第41條:多用派發隊列,少用同步鎖??
第42條:多用GCD,少用performSelector系列方法??
第43條:掌握GCD及操作隊列的使用時機??
第44條:通過Dispatch Group機制,根據系統資源狀況來執行任務??
第45條:使用dispatch_once來執行只需運行一次的線程安全代碼??
第46條:不要使用dispatch_get_current_queue??
第7章 系統框架
第47條:熟悉系統框架??
第48條:多用塊枚舉,少用for循環??
第49條:對自定義其內存管理語義的collection使用無縫橋接??
第50條:構建緩存時選用NSCache而非NSDictionary??
第51條:精簡initialize與load的實現代碼??
第52條:別忘了NSTimer會保留其目標對象??