前言
人生如長跑,成長如進階
曾經有很多次想提筆寫一本純粹的技術圖書,有幾次甚至已經把目錄做完了,但是看到“層巒疊嶂”的目錄結構,我總是心生恐懼。一想到要耗費一年多的業余時間去寫那些枯燥無味的技術文字,并逐一核對各種技術細節,我仿佛置身幽暗的森林而無法自拔。計劃還未開始,就已經結束了。
總有人會去做這些費時費力并能夠惠及大眾的事情,他們像一個個沉默的跑者,在奔跑的同時,不停地標出路線,記錄經驗,傳播技巧,并吸引更多的人加入跑步的隊伍一起成長。
唐巧就是其中之一。
我很早就認識了唐巧,那時他還是一個初入江湖的“小球”,高高瘦瘦,正在網易有道做云筆記的開發。短短幾年之內,唐巧獲得了飛速的成長,他不僅是一個優秀的iOS 開發者,而且成為iOS 領域的布道者。他從2011 年開始構建獨立博客“唐巧的技術博客”,撰寫了大量的iOS 開發相關的文章,成為知名iOS 博主。2012 年唐巧離開網易有道,加入猿題庫,成為一個創業者。期間他組建了由iOS 開發領域頂尖開發者構成的“真·iOS 開發”QQ 群,大家一邊在群里討論技術問題,一邊通過各自的博客把成果分享出去。我有幸參與其中,可以說,這是iOS 領域最專業的技術群體之一。2013 年春節,唐巧開通了微信公眾平臺“iOS 開發”(iOSDevTips),開始基于微信公眾號傳播自己的開發理念和相關技術,迄今為止已經積累了一萬多名專業訂閱者。
在承擔日常研發任務的同時,還能做這么多的技術寫作和內容分享,他讓我這個老程序員亦十分佩服。
2013 年的一天,我在一次技術會議上碰到了唐巧,談起了技術寫作的事情。現在國內iOS 開發領域的技術圖書良莠不齊,很多是“編著”,摘抄或翻譯自官方文檔,而且大家很喜歡去寫入門類的圖書,從編程語言、MVC、協議、策略到Xcode 的使用,到第一個App 項目的構建,等等,高級一點的進階內容就少有涉及,很多iOS 開發者讓我推薦一本面向中高級開發者的中文書時,我總是遍尋不著。那時候我正準備出版自己的《MacTalk·人生元編程》,于是也希望唐巧寫一本iOS 進階方面的書。我對唐巧說,你的博客上已經產出了那么多高質量的iOS 開發進階內容,為什么不再增加一些內容,集結成冊梳理成書呢?他若有所思地回答,我正準備這么干!
經年以后,唐巧再也沒和我提起這件事,我也在忙忙碌碌中把他的書忘得一干二凈。上周突然收到唐巧的一份書稿,打開一看,《iOS 開發進階》靜靜地躺在郵箱里,已然成書。唐巧用了一年的時間,在博客文章的基礎上進行完善、修改、增補,用清晰的“絲線”把散落各處的“珍珠”串起,形成脈絡完整的知識體系,然后又新增了超過成書一半的內容,最終完成了這本關于iOS 開發的進階圖書。
書中從iOS 開發實戰最常用的工具講起,一直寫到底層開發原理。內容分成三塊:工具、實踐和原理,每個章節都獨立成文,讀者可以從頭細細品讀,也可以隨時翻閱其中一節,利用碎片時間閱讀學習。就我個人而言,非常喜歡實踐和原理兩個部分,比如處理多核編程的GCD 技術、應用程序安全技術、CoreText 的排版引擎、Objective-C 對象模型、block 對象模型等,這些內容要么能幫助我解決實際問題,要么能夠答疑解惑,深入細節。作為一個仍然在一線開發的技術作者,唐巧采用了圖文并茂的方式去闡述問題,每個技術專題都配備了恰當的代碼,力求將復雜的技術以最為簡潔的方式呈現出來,讓讀者一目了然,讀來深入淺出,并不枯燥。
寫書永遠有遺憾。由于出版時間的要求,這本書的原理部分略顯單薄,另外,全書并未涉及蘋果的最新語言Swift 相關的內容,相關的代碼示例都是基于Objective-C 的。希望唐巧的下一本書能夠涉及更多這部分內容,這也是我的一個心愿。
在這樣一個原創匱乏的年代,我能做到的就是向更多的人去推薦這樣一本書。人生如長跑,成長如進階,如果你是一個iOS 開發者,這本書一定不要錯過!
池建強
《MacTalk·人生元編程》作者
微信平臺MacTalk 出品人
2014 年,冬