入門呢,先多瞭解下iOS開發的知識樹。樹上有什麼大枝大葉,內心有個數最好啦。平時多看看書,多和前輩討論技術,就get不少經驗的。選對了位置,再逐步突破不懂的點,以後開始研究一些有深度的領域,一萬小時定理你懂的。java
首先推薦一些進階的書籍(很差意思哈,看的很少。):git
1.《Objective-C基礎教程》github
2.《Objective-C編程之道:iOS設計模式解析》面試
3.《Objective-C高級編程(iOS與OSX多線程和內存管理)》正則表達式
4.《EffectiveObjective-C》 [機械工業出版社 Effective系列叢書]編程
5.《iPhone開發祕籍》Erica Sadun著設計模式
[注:以上除Effective那本以外,4本都是人民郵電出版社 圖靈叢書系列的]緩存
接着,我再大概羅列下一些技術劃分哈。安全
初級階段:微信
就Objective-C而言:
1.Foundation框架、Catagory、KVC、KVO、Protocol、Block、引用計數等基本知識有有所掌握。
2.注意代碼規範。
iOS開發的通用控件而言:
1.UIView方面相關控件(UILabel、UIImageView、UIButton、UISlider、UISwitch、UIScrollView(TableView、CollectionView、TextView)、UIWebView、UIWindow、UINavigationBar、UITabBar)。
2.瞭解UIViewController的生命週期,Navigation的堆棧原理等等。
3.千萬別隻用代碼寫UI或是僅使用Storyboard,把Xib、storyborad搞搞清楚,特別是AutoLayout用好來也很重要,此處補充推薦:Masonry Framework,算是約束方面的語法糖。
4.NSNotifaication、觀察者、代理,都是全局代碼事件的必要手段,活用巧用能夠進一步解耦代碼。
5.手勢。UITapGestureRecognizer、UIPanGestureRecognizer、UILongPressGestureRecognizer、UISwipeGestureRecognizer、UIRotationGestureRecognizer。
6.屏幕的旋轉,很少贅述,這個坑要多走走才過的好。
7.原聲導航地圖相關開發,此處不才推薦本人的一篇文章:http://www.jianshu.com/p/72652a93741d
8.文件管理,Bundle、NSFileManager。
9.數據存儲,UserDefault,KeyChain、NSKeyedArchiver。
10.ARC(工做一年的人最容易背面試的方向,還望反覆揣摩。)
iOS動畫:
1.UIView動畫封裝,此處敲黑板UIAnimation,若是有空,能夠看看Lottie,能夠支持不少更炫的動畫效果。不過前提是大家公司有AE設計師。
2.Controller 相關的TransitionStyle
3.CAlayer,此處應當敲黑板,由於這部分有不少知識點,面試可以在UI方向上答到,能夠加分。
設計模式:
這部份內容研究,建議拿一些開源企業級框架進行學習。本人當時是哪BeeFramework上手,Bee框架算是很好的MVC模式學習框架了。XML UI + Signal的View構建方式也挺優秀的。不過惋惜的是如今Bee已經再也不維護了,因此就拿來學習吧。(另外備註:不少公司也推行MVVM模式表明ReactiveCocoa,建議找工做的小夥子們能夠看看。)
須要瞭解的經常使用設計模式:
1.MVC
2.代理模式
3.單例
4.觀察者
5.工廠模式
單元測試:
1.單元測試基礎原理
2.XCTest
3.Kiwi(此處應當有敲黑板,Kiwi是BDD(行爲驅動測試)測試方案。)
開發技術以外的還包括:
1.項目版本管理:SVN、Git (Git的GUI,Mac上推薦Tower)
2.項目包依賴管理:CocoaPods(OC)、SwiftPackage Manager(Swift)
3.調試各類小技巧。好比斷點(條件、全局)、lldb調試基本指令、NSZombieEnabled、
4.一些基本概念的理解,好比進程、線程、同步、異步、隊列、串行、併發。
中級階段。
在這個階段呢,咱們應該更多關注性能和業務方面的優化。
開發語言方面:
1.Swift:Objective-C與Swift互調。
2.JavaScript:使用Objective-C執行JavaScript。能夠多熟悉瞭解JavaScriptCore。三方框架方面推薦WebViewjavaScriptBridge。
3.C、C++、Objective-C混編。
iOS方面:
1.動畫上熟悉CAAnimation(CABasicAnimation、CAKeyFrameAnimation、CAAnimationgroup\CATransition)、UIDynamics(UIDynamicAnimator、UIDynamicBehavior)
2.Runtime:objc_msgSend、Method Swizzling;
3.正則表達式:NSpredicate、NSRegularExpression。
4.消息推送機制
5.組件開發:建立Framework、打包靜態庫
6.分清32位和64位編譯區別,可以將32位程序遷移到64位(這部分,,,,不強求)。
多媒體:
VLC組件使用頻率較高,但其中部分不須要的解碼庫能夠適當的剝除以下降庫大小,SDWebImage能夠細緻的去研究他的加載策略緩存策略。CoreAudio、COreGraphics可以調度硬件進行編解碼,提高效率多半是Android一時半會達不到的。
1.視頻:MediaPlayer、AVPlayer、VLCPlayer、AVFoundation
2.圖片:CoreGraphics、SDWebImage、CoreImage
3.音頻:CoreAudio
4.應用外重要的圖像處理框架:GPUImage,你若是想進個眼下很火的拍照、短視頻相關開發的公司,建議深刻研究這個開源庫。此處推薦個人Git倉庫:https://github.com/filelife
網絡交互:
此處應該毋庸置疑推薦研究AFNetworking(2.0、3.0)兩個版本,先會用,以後開始學着封裝抽象。
1.NSStream
2.NSURLconnection
3.NSURLSession
4.Json解析(model數據接收致使崩潰,多半在Json解析。)
應用測試:
還在爲應用莫名其妙卡殼而苦惱嗎,還在爲找不到項目優化點而被產品同批嗎?Instrument——你值得擁有。
1.性能測試:instrument(Timer、Allocation、Leak)
2.Fabric :上線應用的崩潰、用戶操做採集統計平臺。通常,你一我的開發,,用不到這個,你就蠻看看吧。
開發環境與工程框架(我的以爲也是中後期關注比較多的點)
工程框架
1.包依賴管理:Cocoapods、SwiftPackageManager、Carthage。若是你爲了添加一個依賴庫,還在手動從Git上面下載,那麼就該注意去使用這些包管理工具了。提升效率不少,而且方便團隊開發時,快速構建項目框架。(注:若是你是從ObjectiveC入手,那麼推薦你本身嘗試推一個Podspec,完成本身的第一個遠端Cocoapods倉庫。)
2.持續集成:Jenkins。首先,你先發現了本身在開發過程當中對於持續集成的需求,而且發現真的很累...那麼此時你就該認真的思考如何經過工具完成這一煩躁的工做了。
3.數據安全:
3.1數據加密:Hash(MD五、SHA一、SHA265)、RSA、AES、3DES、Base63.
3.2HTTPS與SSL:作開發,必需要學會跳過HTTPS受權,iOS也不例外。
4.打包工具:Jenkins、Command Line Tools、Xctool
5.用戶行爲監控,崩潰日誌手機:Fabric、Umeng
開發環境
1.git:SourceTree、Tower(強烈推薦Tower,速度比ST快多了。)
2.SVN:Versions、Cornerstone。(講真Versions比Cornerstone好用。)
3.開發者帳號申請和管理:
3.1Apple Developer MemberCenter :證書(發佈證書、開發證書、推送證書)、設備管理、配置文件管理(不差錢就花99刀買一個開發者帳號吧)
3.2iTurnes Connect:Appstore應用管理、應用上架審覈檢測、加急審覈。
5.熱門技術:
5.1支付:微信支付、支付寶支付
5.2分享:微博、微信朋友圈等
5.3即時通信:XMPP、VoIP(不知道放這裏合不合適哈,作過視頻會議,網絡電話的人都懂。)
5.4混合應用開發:ReactNative,此處建議在完成OC學習以後進行,部分公司有需求。
以上列出的大部份內容來自於平常開發,還有書本閱讀,也有部分的內容來自於平時和前輩討(xia)論(che)時談到的一些技術點,都會倉鼠心態的將其收入筆記中,閒暇時候整理成知識點再逐個學習瞭解。
我的比較相信一萬小時原則,多碼新鮮的代碼多半不會錯的,但學習的同時也多調整方向。