注:參考原文+結(jié)合本人多年開發(fā)經(jīng)驗總結(jié)
? ? 后續(xù)的文章會持續(xù)覆對本文列出的知識點解釋
請關(guān)注和點贊
[原文作者鏈接](http://www.angelen.me)
[原文作者的處女作)[http://www.angelen.me/app)
Q: 我從事 iOS 兩年了,感覺只會搭建view,用第三方庫贤斜,還有些機械代碼?真的迷茫了竹习。想進(jìn)階,具體從什么大點入手呢列牺?
A: 說實話整陌,兩年時間只會搭建view、使用第三方類庫,真的不能稱為一個合格的iOS開發(fā)工程師泌辫!
1 先說OC部分
既然做了兩年了随夸,對Objective-C足夠了解嗎?OC是如何基于C來進(jìn)行的封裝甥郑?解釋一下這兩行代碼啥意思逃魄?
typedef __attribute__((NSObject)) CGGradientRef GradientObject;
@property (nonatomic, strong) GradientObject storedGradient;
protocol、category這樣的東西應(yīng)該要手到擒來才是澜搅?多線程部分的知識點掌握是否扎實伍俘?runtime這種黑魔法研究過沒?代碼足夠優(yōu)雅勉躺、后續(xù)維護(hù)容易嗎癌瘾?各種設(shè)計模式也得會吧?
2 再說UI部分
既然寫了兩年的view饵溅,那么能快速仿造市面上這些主流App的UI嗎妨退?使用Reveal分析過微信、豆瓣蜕企、網(wǎng)易新聞咬荷、知乎、QQ轻掩、蘇寧幸乒、淘寶、支付寶的UI嗎唇牧?使用Charles去抓過他們的接口嗎罕扎?
UI研究稍微深一點,比如側(cè)滑菜單這種要怎么實現(xiàn)丐重?如果你要做實現(xiàn)應(yīng)該要了解UIView和UIViewController腔召,UIViewController和UINavigationController的關(guān)系了吧?我嘞個草扮惦,UIView一堆方法臀蛛,UIViewController一堆方法,到底都是干嘛的熬睹濉掺栅?你難道不好奇?這塊知識點一直是你的盲區(qū)纳猪,你能忍?我忍不了桃笙!
UIView再往深了看氏堤,下面還有CALayer,你研究過沒?為什么修改CALayer的某些property默認(rèn)會有個動畫產(chǎn)生呢鼠锈?
那么Animation闪檬、UIKit Dynamics、Drawing购笆、Graphics這些隨便拎出來一個粗悯,夠你研究一陣了吧?你看看比如網(wǎng)易新聞同欠,在新聞詳情頁面上拉样傍,回到新聞列表頁面的這個動畫做的出來嗎?你看看QQ在電話通信頁面铺遂,點擊右下角縮放圖標(biāo)衫哥,縮放成一個頭像的這種動畫,你會做不襟锐?
3 還有這些大的功能點
既然用了兩年第三方類庫撤逢,那么比如圖片緩存這類,看過源碼實現(xiàn)沒粮坞?如果自己來實現(xiàn)的話蚊荣,有哪些Caching Algorithms?該怎么取舍莫杈?各種常用的第三方類庫你研究過原理沒互例?
你的App在和服務(wù)器交流數(shù)據(jù)的過程中安全性怎么樣?你是不是要研究一下加解密姓迅?HTTP理解的夠清楚嗎敲霍?想沒想過自己來寫接口?或者更甚至一些自己來寫個簡易的HTTP服務(wù)器丁存?接口部分甚至用CGI來實現(xiàn)也可以凹玷尽!
要寫服務(wù)器解寝,那應(yīng)該要了解一下網(wǎng)絡(luò)部分吧扩然?TCP/IP 協(xié)議得熟悉吧?然后Wireshark各種抓包得會吧聋伦?
網(wǎng)絡(luò)這塊順帶過來之后夫偶,即時聊天類的App采用的什么技術(shù)?選 xmpp 還是 mqtt 還是自己寫觉增?正好可以順勢了解一下吧兵拢!
iOS SDK里面的各種API你掌握到了什么程度?這些功能模塊排除地圖逾礁、通訊錄這種说铃,說些高級的比如CloudKit、Extensions、TextKit腻扇、AirDrop债热、PassKit?覺得這些模塊在自家公司的項目中壓根沒用過幼苛?可是看看你手邊的App窒篱!
4 其它專業(yè)化的方向
視音頻處理做過嗎?此類諸如豆瓣FM舶沿、蝦米音樂墙杯、喜馬拉雅、QPlayer這類的App你去研究過他們嗎暑椰?還有VoIP這類的霍转,我實習(xí)的時候做過這種╮(╯_╰)╭
游戲開發(fā)方向有沒有興趣?自己有沒有去研究過呢一汽?(反正這個我是真沒有╮(╯_╰)╭)
5 項目安全優(yōu)化等
項目中寫單元測試嗎避消?UI Automation 自動化測試做的怎么樣?持續(xù)集成平臺諸如Jenkins等會用嗎召夹?
App的各種性能優(yōu)化岩喷、Crash的統(tǒng)計分析等等你做了沒?
App本地數(shù)據(jù)儲存夠安全嗎监憎?你對逆向了解多少纱意?敏感部分是否做了代碼混淆?
6 知識體系要持續(xù)更新
官方的文檔鲸阔、國外的相關(guān)書籍采用的語言都是Swift偷霉,難道你不準(zhǔn)備學(xué)學(xué)?除了native的褐筛,現(xiàn)在的HTML5也很火啊类少,難道不準(zhǔn)備學(xué)?
英文練習(xí)的怎么樣了渔扎?官方所有的開發(fā)者文檔以及歷年的WWDC視頻看完了硫狞?這么多書,這么多大牛的博客晃痴,你難道從中一無所獲残吩?
補充一個非常重要的進(jìn)階知識板塊:APP架構(gòu)設(shè)計
MVC 你就耳熟能詳了,MVVM 你不打算了解了解嗎倘核?
-----------------上面的是別人,下面的是我的補充------------------------------
1)CoreData的多線程 了解沒? ?CoreData 的不同版本的數(shù)據(jù)遷移怎么做?
2)runtime 如何使用?runtime的原理,用在項目中.
3)runloop 的理解,項目中如何使用
4)js與oc 的交互會不會?
5)GCD ,NSThread ,NSOperation 能不能滔滔不絕的講出來?
6)會不會寫插件 ?
7)block 理解是否深入?
8)動畫訂單制作是否清楚,并且用在項目中
9)keyChain 鑰匙串存儲
10)apple pay,3Dtouch 是否學(xué)習(xí)下?
11)stackView 的使用?
12)網(wǎng)絡(luò)加密,
13)推送的深入理解
14)pop 動畫框架的學(xué)習(xí)
15)reactiveCocoa 使用
16)逆向工程,反編譯.
17)內(nèi)存管理詳細(xì)了解
18)app 瘦身技術(shù)
19)cocoapods 使用
20 )github 項目
21)插件制作
22 打包.a ?和framwork