Q: 我從事 iOS 兩年了,感覺只會搭建view宰译,用第三方庫檐蚜,還有些機(jī)械代碼?真的迷茫了沿侈。想進(jìn)階闯第,具體從什么大點(diǎn)入手呢?
A: 說實(shí)話缀拭,兩年時間只會搭建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)該要手到擒來才是叛甫?多線程部分的知識點(diǎn)掌握是否扎實(shí)层宫?runtime這種黑魔法研究過沒?代碼足夠優(yōu)雅其监、后續(xù)維護(hù)容易嗎萌腿?各種設(shè)計(jì)模式也得會吧?
2 再說UI部分
既然寫了兩年的view棠赛,那么能快速仿造市面上這些主流App的UI嗎哮奇?使用Reveal分析過微信、豆瓣睛约、網(wǎng)易新聞鼎俘、知乎、QQ辩涝、蘇寧贸伐、淘寶、支付寶的UI嗎怔揩?使用Charles去抓過他們的接口嗎捉邢?
UI研究稍微深一點(diǎn)脯丝,比如側(cè)滑菜單這種要怎么實(shí)現(xiàn)?如果你要做實(shí)現(xiàn)應(yīng)該要了解UIView和UIViewController伏伐,UIViewController和UINavigationController的關(guān)系了吧宠进?我嘞個草,UIView一堆方法藐翎,UIViewController一堆方法材蹬,到底都是干嘛的啊吝镣?你難道不好奇堤器?這塊知識點(diǎn)一直是你的盲區(qū),你能忍末贾?我忍不了闸溃!
UIView再往深了看,下面還有CALayer拱撵,你研究過沒辉川?為什么修改CALayer的某些property默認(rèn)會有個動畫產(chǎn)生呢?
那么Animation裕膀、UIKit员串、Dynamics、Drawing昼扛、Graphics這些隨便拎出來一個寸齐,夠你研究一陣了吧?你看看比如網(wǎng)易新聞抄谐,在新聞詳情頁面上拉渺鹦,回到新聞列表頁面的這個動畫做的出來嗎?你看看QQ在電話通信頁面蛹含,點(diǎn)擊右下角縮放圖標(biāo)毅厚,縮放成一個頭像的這種動畫,你會做不浦箱?
3 還有這些大的功能點(diǎn)
既然用了兩年第三方類庫吸耿,那么比如圖片緩存這類,看過源碼實(shí)現(xiàn)沒酷窥?如果自己來實(shí)現(xiàn)的話咽安,有哪些Caching Algorithms?該怎么取舍蓬推?各種常用的第三方類庫你研究過原理沒妆棒?
你的App在和服務(wù)器交流數(shù)據(jù)的過程中安全性怎么樣?你是不是要研究一下加解密?HTTP理解的夠清楚嗎糕珊?想沒想過自己來寫接口动分?或者更甚至一些自己來寫個簡易的HTTP服務(wù)器?接口部分甚至用CGI來實(shí)現(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染苛?覺得這些模塊在自家公司的項(xiàng)目中壓根沒用過鹊漠?可是看看你手邊的App!
4 其它專業(yè)化的方向
視音頻處理做過嗎茶行?此類諸如豆瓣FM躯概、蝦米音樂、喜馬拉雅畔师、QPlayer這類的App你去研究過他們嗎娶靡?還有VoIP這類的,我實(shí)習(xí)的時候做過這種╮(╯_╰)╭
游戲開發(fā)方向有沒有興趣看锉?自己有沒有去研究過呢姿锭?(反正這個我是真沒有╮(╯_╰)╭)
5 項(xiàng)目安全優(yōu)化等
項(xiàng)目中寫單元測試嗎?UI Automation 自動化測試做的怎么樣伯铣?持續(xù)集成平臺諸如Jenkins等會用嗎呻此?
App的各種性能優(yōu)化、Crash的統(tǒng)計(jì)分析等等你做了沒懂傀?
App本地數(shù)據(jù)儲存夠安全嗎趾诗?你對逆向了解多少?敏感部分是否做了代碼混淆?
6 知識體系要持續(xù)更新
官方的文檔恃泪、國外的相關(guān)書籍采用的語言都是Swift郑兴,難道你不準(zhǔn)備學(xué)學(xué)?除了native的贝乎,現(xiàn)在的HTML5也很火啊情连,難道不準(zhǔn)備學(xué)?
英文練習(xí)的怎么樣了览效?官方所有的開發(fā)者文檔以及歷年的WWDC視頻看完了却舀?這么多書,這么多大牛的博客锤灿,你難道從中一無所獲挽拔?
補(bǔ)充一個非常重要的進(jìn)階知識板塊:APP架構(gòu)設(shè)計(jì)
MVC 你就耳熟能詳了,MVVM 你不打算了解了解嗎但校?
-----------------上面的是別人,下面的是我的補(bǔ)充------------------------------
1)CoreData的多線程 了解沒? ?CoreData 的不同版本的數(shù)據(jù)遷移怎么做?
2)runtime 如何使用?runtime的原理,用在項(xiàng)目中.
3)runloop 的理解,項(xiàng)目中如何使用
4)js與oc 的交互會不會?
5)GCD ,NSThread ,NSOperation 能不能滔滔不絕的講出來?
6)會不會寫插件 ?
7)block 理解是否深入?
8)動畫訂單制作是否清楚,并且用在項(xiàng)目中
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 項(xiàng)目
21)插件制作
22 打包.a ?和framwork
我覺得寫得還好螃诅,原文在這?