在通往“iOS技術殿堂”的路上,本書將為你編寫健壯、優雅、高質量的Objective-C代碼提供極為寶貴的經驗!內容全部由Objective-C編碼的最佳實踐組成,從基本原則、慣用法、語法、內存管理、設計、實現、設計模式、兼容性和性能優化等方面深入探討了編寫高質量Objective-C代碼的技巧、禁忌和最佳實踐。共總結出61條寶貴的建議,每條建議對應Objective-C程序員可能會遇到的一個問題。本書不僅以建議的方式從正反兩方面給出了被實踐證明為十分優秀的解決方案或非常糟糕的解決方案,而且分析了問題產生的根源,會使人有一種醍醐灌頂的感覺,豁然開朗。
本書針對每個問題所選擇的應用場景都非常典型,給出的建議也都與實踐緊密結合。書中的每一條建議都可能在你的下一行代碼、下一個應用或下一個項目中顯露鋒芒。建議你將本書擱置在手邊,隨時查閱,相信這么做一定能使你的學習和開發工作事半功倍。
從基本原則、慣用法、語法、內存管理、設計、實現、設計模式、兼容性和性能優化的等方面深入探討編寫高質量Objective-C代碼的技巧、禁忌和實踐
劉一道
資深Mac/iOS開發工程師,有近10年軟件開發經驗,精通iOS、Objective-C、Xcode等與蘋果開發相關的各項技術,同時對Android和Windows Phone等移動開發技術也有深入的研究,并積累了豐富的實戰經驗。出版了《Objective-C程序設計入門與實踐》和《iOS 7:iPhone/iPad應用開發技術詳解》等著作。
Contents 目 錄
前 言
第1章 讓自己習慣Objective-C1
建議1:視Objective-C為一門動態語言1
建議2:在頭文件中盡量減少其他頭文件的引用6
建議3:盡量使用const、enum來替換預處理#define10
建議4:優先使用對象字面量語法而非等效方法13
建議5:處理隱藏的返回類型,優先選擇實例類型而非id17
建議6:盡量使用模塊方式與多類建立復合關系19
建議7:明解Objective-C++中的有所為而有所不為23
第2章 數據類型、集合和控制語句28
建議8:C語言與Objective-C語言的關系是充分而非必要條件28
建議9:高度警惕空指針和野指針的襲擊31
建議10:在64位環境下盡可能利用標記指針35
建議11:謹記兼容32位和64位環境下代碼編寫事項38
建議12:清楚常量字符串和一般字符串的區別43
建議13:在訪問集合時要優先考慮使用快速枚舉44
建議14:有序對象適宜存于數組,而無序對象適宜存于集48
建議15:存在公共鍵時,字典是在對象之間傳遞信息的絕佳方式53
建議16:明智而審慎地使用BOOL類型55
第3章 內存管理57
建議17:理解內存和Objective-C內存管理規則57
建議18:內存管理講究“好借好還,再借不難”61
建議19:區別開alloc、init、retain、release和dealloc之間的差異63
建議20:優先選用存取方法來簡化內存管理66
建議21:對象銷毀或者被移除一定考慮所有權的釋放70
建議22:明智而審慎地使用dealloc73
第4章 設計與聲明75
建議23:編寫代碼要遵守Cocoa API約定75
建議24:洞悉實例變量77
建議25:透徹了解屬性的里里外外81
建議26:存取方法是良好的類接口必要組成部分85
建議27:明曉類公共領域的方法都是虛方法87
建議28:初始化還是解碼取決于是否支持歸檔和解檔92
建議29:利用鍵–值機制訪問類的私有成員變量和方法93
建議30:淺復制適宜指針而深復制適宜數據101
建議31:明智而審慎地使用NSCopying103
建議32:使用協議來實現匿名對象的提供106
第5章 實現108
建議33:使用類別把類的實現拆分成不同的文件108
建議34:明智地使用內省可使程序更加高效和健壯109
建議35:盡量使用不可變性對象而非可變性對象113
建議36:利用復合能巧妙地把兩個類或兩個對象融合115
建議37:使用類擴展來隱藏實現的細節120
建議38:使用內聯塊應注意避免循環引用122
建議39:利用類別把方法添加到現有的類124
建議40:通過強弱引用來管理對象的所有權127
第6章 繼承與面向對象設計133
建議41:明確isa在繼承上的作用133
建議42:利用類別和協議實現類似多重繼承的機制136
建議43:類別和類擴展是類繼承的延續性拓展139
建議44:繼承基類的實現行為勿忘調用super141
第7章 設計模式與Cocoa編程145
建議45:設計模式是特定環境下的特定問題的解決方案145
建議46:MVC模式是一種復合或聚合模式147
建議47:對象建模在數據庫中也廣泛使用155
建議48:類簇可簡化框架的公開架構而又不減少功能的豐富性160
建議49:委托用于界面控制,而數據源用于數據控制165
第8章 定制init...和dealloc171
建議50:了解對象的alloc和init...171
建議51:直接訪問實例變量的init...方法174
建議52:初始化方法必須以“init”字母開頭176
建議53:從init...方法得到的對象可能是不想要的177
建議54:實現init...方法的**性或者指定性并非“不可能”179
建議55:init...方法有“輕重級別”之分181
第9章 Objective-C與Swift的兼容性184
建議56:Objective-C和Swift的互用性基于映射機制184
建議57:利用Swift的特性可增強已有的Objective-C代碼191
建議58:洞悉Objective-C 和Swift類型轉換的處理機制194
建議59:C語言的數據類型在Swift中“有所變有所不變”199
建議60:Swift和Objective-C兼容性是基于混搭機制204
建議61:利用遷移機制實現Objective-C代碼的重生209