iOS 高階工程師是怎麼進階的?

發表於2016-04-12

Q: 我從事 iOS 兩年了,感覺只會搭建view,用第三方庫,還有些機械程式碼?真的迷茫了。想進階,具體從什麼大點入手呢?
A: 說實話,兩年時間只會搭建view、使用第三方類庫,真的不能稱為一個合格的iOS開發工程師!

1 先說OC部分

  • 既然做了兩年了,對Objective-C足夠了解嗎?OC是如何基於C來進行的封裝?解釋一下這兩行程式碼啥意思?
  • protocol、category這樣的東西應該要手到擒來才是?多執行緒部分的知識點掌握是否紮實?runtime這種黑魔法研究過沒?程式碼足夠優雅、後續維護容易嗎?各種設計模式也得會吧?

2 再說UI部分

  • 既然寫了兩年的view,那麼能快速仿造市面上這些主流App的UI嗎?使用Reveal分析過微信、豆瓣、網易新聞、知乎、QQ、蘇寧、淘寶、支付寶的UI嗎?使用Charles去抓過他們的介面嗎?
  • UI研究稍微深一點,比如側滑選單這種要怎麼實現?如果你要做實現應該要了解UIView和UIViewController,UIViewController和UINavigationController的關係了吧?我嘞個草,UIView一堆方法,UIViewController一堆方法,到底都是幹嘛的啊?你難道不好奇?這塊知識點一直是你的盲區,你能忍?我忍不了!
  • UIView再往深了看,下面還有CALayer,你研究過沒?為什麼修改CALayer的某些property預設會有個動畫產生呢?
    那麼Animation、UIKit Dynamics、Drawing、Graphics這些隨便拎出來一個,夠你研究一陣了吧?你看看比如網易新聞,在新聞詳情頁面上拉,回到新聞列表頁面的這個動畫做的出來嗎?你看看QQ在電話通訊頁面,點選右下角縮放圖示,縮放成一個頭像的這種動畫,你會做不?

3 還有這些大的功能點

  • 既然用了兩年第三方類庫,那麼比如圖片快取這類,看過原始碼實現沒?如果自己來實現的話,有哪些Caching Algorithms?該怎麼取捨?各種常用的第三方類庫你研究過原理沒?
  • 你的App在和伺服器交流資料的過程中安全性怎麼樣?你是不是要研究一下加解密?HTTP理解的夠清楚嗎?想沒想過自己來寫介面?或者更甚至一些自己來寫個簡易的HTTP伺服器?介面部分甚至用CGI來實現也可以啊!
  • 要寫伺服器,那應該要了解一下網路部分吧?TCP/IP 協議得熟悉吧?然後Wireshark各種抓包得會吧?
  • 網路這塊順帶過來之後,即時聊天類的App採用的什麼技術?選 xmpp 還是 mqtt 還是自己寫?正好可以順勢瞭解一下吧!
  • iOS SDK裡面的各種API你掌握到了什麼程度?這些功能模組排除地圖、通訊錄這種,說些高階的比如CloudKit、Extensions、TextKit、AirDrop、PassKit?覺得這些模組在自家公司的專案中壓根沒用過?可是看看你手邊的App!

4 其它專業化的方向

  • 視音訊處理做過嗎?此類諸如豆瓣FM、蝦米音樂、喜馬拉雅、QPlayer這類的App你去研究過他們嗎?還有VoIP這類的,我實習的時候做過這種╮(╯_╰)╭
  • 遊戲開發方向有沒有興趣?自己有沒有去研究過呢?(反正這個我是真沒有╮(╯_╰)╭)

5 專案安全優化等

  • 專案中寫單元測試嗎?UI Automation 自動化測試做的怎麼樣?持續整合平臺諸如Jenkins等會用嗎?
  • App的各種效能優化、Crash的統計分析等等你做了沒?
  • App本地資料儲存夠安全嗎?你對逆向瞭解多少?敏感部分是否做了程式碼混淆?

6 知識體系要持續更新

  • 官方的文件、國外的相關書籍採用的語言都是Swift,難道你不準備學學?除了native的,現在的HTML5也很火啊,難道不準備學?
  • 英文練習的怎麼樣了?官方所有的開發者文件以及歷年的WWDC視訊看完了?這麼多書,這麼多大牛的部落格,你難道從中一無所獲?

相關文章