1. 程式人生 > >這可能是最詳細的iOS學習入門指南(含書目/文件/學習資料)

這可能是最詳細的iOS學習入門指南(含書目/文件/學習資料)

零基礎小白如何進行iOS系統學習?入門後如何進階,進而成為資深的iOS專家?iOS開發者的能力圖譜是怎麼樣的?想要走向專家級別,需要怎樣的知識體系?網易阿里等網際網路公司需要怎樣的iOS人才?……
這些問題恐怕是想要入行iOS或者初入行1-3年的開發同學經常碰到的,今天我們邀請到了網易移動技術團隊負責人張平,從這五個問題的角度來為大家答疑解惑。

張平 | 網易移動技術團隊負責人多年瀏覽器核心、JavaScript直譯器研發經驗;負責過多款APP和一些基礎SDK的研發;熱愛優秀的程式語言。
1零基礎小白如何進行iOS系統學習首先,學習目標要明確;其次,有了目標,要培養興趣,經常給自己一些正面的反饋,比如對自己的進步進行鼓勵,在前期小步快走;再次,學技術最重要的一點就是多動手。
推薦書目:《Objective-C基礎教程 》《iOS程式設計》 《iOS開發指南》推薦兩個開源的APP:SegmentFault、懶人筆記
2
基礎入門後,如何進行高階進階2.1 原理和基礎:掌握紮實的原理和基礎是進階的必要條件
首先是語言。入門時候可能只要對語言看得懂,會寫即可。但是在進階階段,看懂會寫是遠遠不夠的。
這個時候,編碼規範就很重要,我們不能隨心所欲的寫,推薦書目《Effective Objective_C2.0》。
除此之外,我們還需熟練掌握Objective-C Runtime。我推薦的素材有http://opensource.apple.com/source/objc4/,這門語言比較好的是它開源,所以我們可以去看它的原始碼。第二是蘋果的這篇文件Objective-C Runtime Programming Guide,我們可以仔細去閱讀。從我自身經歷來看,對Objc_msgSend實現細節的理解程度很大程度上反映了我們對 Objective-C Runtime的掌握程度。再推薦大家一篇文件 The Swift Programming Language,蘋果官方的文件,大家可以反反覆覆去看。
2.2 iOS GUI學習

我聽到有些人說GUI學習太簡單了,我隨便看看能刷幾個頁面就可。還會有這樣一種說法,GUI的程式碼太難看了。
我個人十分重視GUI,我認為這是真正挑戰的地方,因為這能真正反映我們的熟練程度,是否真正懂得其背後的設計原理。 
APP Guide:l  View Programming guidel  View Controller Programming Guidel  Event Handling Guidel  Drawing and Printing Guidel  Core Animation Programming Guide
2.3 Xcode學習
工欲善其事,必先利其器。在我看來,Xcode就是這個器,因此需要十分重視。
Apple Guide:
| Xcode Overview| Xcode Project Management Guide 關於Xcode的流程,我們需要清晰的知道Xcode編譯、連結、打包的流程,配置和Xcodeconfig的操作。另外,還需知道Xcode管理多工程、多Target. 還需熟練使用cocoapods、plugin。當然,IIvm除錯工具也是必不可少的。
2.4 網路
理解NSUPLConnection、NSURLSession、NSURLProtocol
Apple Guide:| URL Loading System Programming Guide| Introduction to CFNetwork Programming Guide
2.5 多執行緒
推薦書目《Objective_C高階程式設計ios與OS X多執行緒和記憶體管理》,這本書的特點是透徹,全面。
Apple Guide:| Concurrency Programming Guide| Threading Programming Guide
2.6 逆向安全(瞭解層面)
《iOS應用逆向工程》對我們去了解逆向這些事情和應用的保護是很有幫助的。
Apple Guide:| Keychain Services Programming Guide
2.7 學習資源
| WWDC Session| Objc.io此外,優秀的開源庫也值得我們學習,如:| SDWebImage| AFNetworking/Restkit| Facebook的三個庫:AsyncDisplayKit/pop/ReactNativeReactiveCocoa
3iOS能力清單3.1 GUI自定義UI、熟悉UI渲染機制掌握基本排版機制,掌握AutoLayout熟悉事件傳遞機制,自定義手勢掌握基本動畫,動畫原理
3.2 Controller熟悉基本ViewController使用、transition熟悉MVC等設計模式
3.3 熟悉常見網路庫使用熟悉NSURLConnection, NSURLSession, NSURLProtocol, AFNetworking, 熟悉Cache, cookie管理
3.4 熟悉Sqlite使用,熟悉常見ORM系統設計和實現,熟悉系統常用本地儲存機制熟悉CoreData, sqlite, UserDefault
3.5 熟悉多執行緒訊息傳遞,同步機制,執行緒池設計和實現掌握NSOperation  GCD  Runloop 機制和實現
3.6 熟悉音訊、視訊基本概念,熟悉相關係統介面熟悉拍照、錄影等相關介面

3.7 程式語言熟悉C/C++、Objective-C、Swift
3.8 效能優調熟悉移動端常見效能問題和解決方案:主執行緒CPU密集操作,主執行緒IO操作,排版、渲染耗時網路效能分析和調優(《Web效能權威指南》)熟練使用Instrument進行效能調優
3.9 安全熟悉常見iOS應用安全機制(keychain,codesign),熟悉常見應用資料保護機制熟悉常見加解密演算法熟悉iOS逆向與安全
4走向專家的知識體系
內功而非招式,更看重基礎的掌握。所以,我們需要加強自身實際的能力,主要包括:l  數學基礎l  作業系統l  程式的編譯上,連結與載入,推薦《程式設計師的自我修養》l  ARM體系架構,推薦ARM體系結構與程式設計》l  學習多正規化的程式語言l  設計模式l  計算機網路l  資料庫
5企業需要怎樣的iOS人才
| 大公司更看重基礎,成長性| 技術熱情| 系統學習的能力| 聽說能力| 敢於承擔、敢於挑戰