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 guide l View Controller Programming Guide l Event Handling Guide l Drawing and Printing Guide l 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 / ReactNative | ReactiveCocoa 3 iOS 能力清單 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 人才 | 大公司更看重基礎,成長性 | 技術熱情 | 系統學習的能力 | 據說能力 | 勇於承擔、勇於挑戰