iOS高級(jí)工程師是如何進(jìn)階的
說實(shí)話這個(gè)話題說的有點(diǎn)大了羽杰,其實(shí)我有時(shí)候也是非常的迷茫的渡紫,工作忙的時(shí)候還能跟著工作的節(jié)奏走,閑下來時(shí)間一長就有點(diǎn)迷茫考赛,不知做什么腻惠。這當(dāng)然是非常恐怖的了欲虚,所以現(xiàn)在在迷茫過、在不知所措過之后悔雹,想想還是應(yīng)該寫寫文章屢屢思路再上路复哆,希望自己能養(yǎng)成好的習(xí)慣堅(jiān)持下去欣喧。
首先工作過兩年的工程師,只會(huì)搭建View梯找、使用第三方類庫唆阿,真的不能稱作一個(gè)合格的iOS開發(fā)工程師,下面我從幾個(gè)方面來說一下需要有什么樣的提高
- ** iOS高級(jí)工程師是如何進(jìn)階的**
- OC部分
- UI部分
- 還有一些大的功能點(diǎn)
- 其他專業(yè)化的方向
- 項(xiàng)目安全優(yōu)化等
- 知識(shí)體系要持續(xù)更新
OC部分
- 既然做了兩年的開發(fā)了锈锤,對(duì)objc有足夠的了解嗎驯鳖?objc和c的區(qū)別是什么,它是如何基于c來進(jìn)行封裝的久免?下面代碼是什么意思浅辙?
typedef __attribute__((NSObject))CGGradientRef GradientObject;
@property(nonatomic,strong)GradientObject storedGradient;
- objc的內(nèi)存管理真的掌握清楚了嗎?為什么對(duì)象用指針來操作阎姥?對(duì)象需要內(nèi)存管理而基本數(shù)據(jù)類型不用呢记舆?它們?cè)趦?nèi)存中又是如何存儲(chǔ)呢的?objc里面的自動(dòng)釋放池又是如何創(chuàng)建和管理的呢呼巴?
- protocol泽腮、category、extension和delegate這類的東西應(yīng)該是手到擒來才是衣赶,你是不是已經(jīng)徹底掌握了诊赊?notification,Userdefault和簡單的文件存儲(chǔ)是不是都很熟悉呢府瞄?
- 多線程網(wǎng)絡(luò)的知識(shí)點(diǎn)掌握的是否扎實(shí)碧磅?https等各種網(wǎng)絡(luò)加密的知識(shí)是否夠了解?能自己搭建服務(wù)器嗎摘能?有沒有使用Charles抓過其他app的網(wǎng)絡(luò)包進(jìn)行分析過呢续崖?
- runtime黑魔法有過了解嗎?它的消息機(jī)制又是如何做的呢团搞,能在開發(fā)中做一些什么高級(jí)的事情呢严望?
- 程序啟動(dòng)過程,為什么能一直運(yùn)行逻恐?runloop又是怎樣的像吻?
- 代碼的封裝性是不是足夠好呢?有沒有足夠優(yōu)雅复隆、后續(xù)維護(hù)容易嗎拨匆?各種設(shè)計(jì)模式使用的如何?
UI部分
- 既然寫了兩年的UI挽拂,那么能快速仿造市面上這些主流app的UI嗎惭每?使用過Reveal去分析過微信、豆瓣、網(wǎng)易云音樂台腥、QQ宏赘、淘寶、支付寶等應(yīng)用的UI嗎黎侈?復(fù)制一個(gè)類似的你需要多長時(shí)間呢察署?有么有自己的一套UI框架能快速完成一個(gè)app的呢?
- UI研究稍微深一點(diǎn)峻汉,比如側(cè)滑菜單這種要如何實(shí)現(xiàn)贴汪,類似餓了么的兩級(jí)聯(lián)動(dòng)菜單呢?如何你要實(shí)現(xiàn)應(yīng)該要了解UIView和UIViewController休吠,UIViewController和UINavigationController的關(guān)系了吧扳埂?我勒個(gè)草,UIView一堆方法蛛碌,UIViewController一堆方法聂喇,到底都是干嘛的啊蔚携?你難道不好奇嗎希太?這塊知識(shí)點(diǎn)一直是你的盲區(qū),你能忍酝蜒?我忍不了誊辉!
- UIView往深了看、下面還有CALayer亡脑,你研究過沒堕澄?為什么修改CAlayer的某些property默認(rèn)會(huì)有個(gè)動(dòng)畫產(chǎn)生呢?
- 那么Animation霉咨、UIKit Dynamics蛙紫、Drawing、Graphics這些隨便拎出來一個(gè)途戒,夠你研究一陣子了吧 坑傅?你看看比如網(wǎng)易新聞,在新聞詳情頁面上拉喷斋,回到新聞列表頁面這個(gè)動(dòng)畫做的出來嗎唁毒?你看看QQ在電話通信頁面,點(diǎn)擊右下角縮放圖標(biāo)星爪,縮放成一個(gè)頭像的這種動(dòng)畫你會(huì)做不浆西?
還有一些大的功能點(diǎn)
- 既然用了兩年三方類庫,那么比如圖片緩存之類顽腾,你看過源代碼嗎近零?如果你自己來實(shí)現(xiàn)的話,有哪些Caching Algorithms?該怎么取舍久信?各種常用的第三方類庫你研究過原理沒猪瞬?
- 你的app在和服務(wù)器交流數(shù)據(jù)的過程后中安全性怎么樣?你是不是要研究一下加解密入篮?http理解的夠清楚嗎?有沒有想過自己來寫接口幌甘?或者更甚一些潮售,自己來寫一個(gè)簡易的http服務(wù)器?接口部分甚至用CGI來實(shí)現(xiàn)也可以啊 锅风!
- 要寫服務(wù)器酥诽,那應(yīng)該要了解一下網(wǎng)絡(luò)部分吧?TCP/IP 協(xié)議得熟悉吧皱埠,然后Wireshark各種抓包得會(huì)吧肮帐?
- 網(wǎng)絡(luò)這塊順帶過來之后,即時(shí)通信類的app采用的什么技術(shù)边器?選xmpp還是mqtt還是自己寫训枢?正好可以順勢了解一下吧?
- iOS SDK里面的各種API你掌握到了什么程度忘巧?這些功能模塊排除地圖恒界、通訊錄這種,說些高級(jí)的比如CloudKit砚嘴、Extensions十酣、AirDrop、PassKit际长?覺得這些模塊在自家公司的項(xiàng)目中壓根沒有用過耸采?可是看看你手邊的app!
其他專業(yè)化的方向
- 音視頻處理做過嗎工育?此類諸如豆瓣FM虾宇、喜馬拉雅、蝦米音樂翅娶、QPlayer文留、秒拍視頻這類的app你去研究過他們嗎?還有VoIP這類的竭沫,你掌握到什么程度了燥翅?
- 游戲開發(fā)方向有沒有興趣?自己有沒有去研究過呢蜕提?(反正這個(gè)我是真的沒有╮(╯_╰)╭)
項(xiàng)目安全優(yōu)化等
- 項(xiàng)目中寫單元測試嗎森书?UI Automation自動(dòng)化測試做的怎么樣?持續(xù)集成平臺(tái)諸如Jenkins等會(huì)用嗎?
- App的各種性能優(yōu)化凛膏、crash的統(tǒng)計(jì)分析等等你做了沒杨名?
- App本地?cái)?shù)據(jù)存儲(chǔ)夠安全嗎?你對(duì)逆向了解多少猖毫,敏感代碼是不是做了代碼混淆呢台谍?
知識(shí)體系要持續(xù)更新
- 官方的文檔、國外的相關(guān)書籍采用的語言都是Swift吁断,難道你不準(zhǔn)備學(xué)學(xué)趁蕊?除了native的,現(xiàn)在的HTML5也很火啊 仔役,難道你不準(zhǔn)備學(xué)學(xué)掷伙?
- 英文練習(xí)的怎么樣了,官方所有的開發(fā)者文檔以及歷年的WWDC視頻都看完了又兵?這么多書任柜,這么多大牛的技術(shù)博客,難道你從中一無所獲沛厨?
最后附上一張iOS知識(shí)框架圖