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