想關(guān)注我,請戳右邊:http://www.angelen.me
我的處女作:http://www.angelen.me/app
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 你不打算了解了解嗎滓鸠?
- ...
作者:賈逸
鏈接:https://www.zhihu.com/question/39597307/answer/82285626
來源:知乎
著作權(quán)歸作者所有雁乡。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處糜俗。