iOS Objective C開發怎麼入門?

VincentJac發表於2017-12-17

入門呢,先多瞭解下iOS開發的知識樹。樹上有什麼大枝大葉,心裡有個數最好啦。平時多看看書,多和前輩討論技術,就get很多經驗的。選對了位置,再逐步突破不懂的點,之後開始研究一些有深度的領域,一萬小時定理你懂的。

首先推薦一些進階的書籍(不好意思哈,看的不多。):

1.《Objective-C基礎教程》

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(MD5、SHA1、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)時談到的一些技術點,都會倉鼠心態的將其收入筆記中,閒暇時候整理成知識點再逐個學習瞭解。

個人比較相信一萬小時原則,多碼新鮮的程式碼多半不會錯的,但學習的同時也多調整方向。

相關文章