都說swift取代oc,爲什麼五年了依然是oc爲主?

1.先說現狀面試

如今國內公司開全新項目,Swift 已經佔壓倒性優點了。數組

不少之前是 OC 的項目也轉向 OC/Swift 混編了。數據結構

可是也有對包大小很是敏感的項目,仍是純 OC 開發。很多公司剛剛擺脫 MRC 不久,業務壓力大,歷史包袱重,沒有時間推動新技術。閉包

2. 對比一下 OC 和 Swift架構

總的來講,Swift 相對於 OC 來講,是進步的。Swift 有不少好的語言特性,能作更好的抽象。工具

說 Swift 線上崩潰 線下 Delay 的不怎麼會寫代碼吧?強類型能幫你糾正不少低級錯誤。Swift 不亂用不熟悉的特性,寫起來除了把 []換成.毫無區別,再不濟全部聲明都加上 @objc ,這夠狠了吧,要是還能出問題也稱不上合格的開發者了。學習

關於 OC 的黑魔法,能玩的也就是 runtime 了, Method/Class Swizzling, AOP,轉發等等。Swift 確實沒有這麼靈活,可是說實話大型項目,category 都不敢亂寫,就別說這些花活了,你寫的黑魔法不知道會影響到誰。要是你的騷操做給別人帶來了 bug,不得被人花式罵死?架構設計

我就遇到過兩次,一次是別人 hook 了 UI 組件的方法,咱們這邊展現異常,百思不得其解,後來一條一條看調用棧纔有了點眉目揪出了問題。設計

第二次差很少,別人 hook 了 UIAnimation 的方法,可是沒考慮周全,致使了崩潰,也是得看調用棧。code

Swift 也有不少靈活的東西能夠玩啊,好比方法=閉包,比 OC 那個靈活多了,@selector() 真的很很差用。

還有就是要吐槽 OC 沒有包名,有的時候真的欲哭無淚,無窮無盡的問題。

Xcode 對 Swift 的支持特別很差,代碼提示動不動就沒了,打開混編項目不用打字,放在那風扇就狂轉,續航從 10 小時降到 2 小時。還有最搞笑的,若是聲明一個數組,不顯式的指定類型,那就等着哭吧,編譯器會一個一個元素的去推斷類型,最後得出數組的範型。我試過聲明一個40個元素的數組,而後這個文件編譯了20分鐘。還好這個 bug 如今修掉了。

3. 對比一下 Swift 和 Kotlin

使用下來感受 Swift 不如 Kotlin。Swift 的 API 不如 Kotlin,好比在可選型解包的的時候,要繁瑣的多。Kotlin 和 Java 能無縫對接,可是 Swift 和 OC 是兩門語言,混編的時候比較痛苦,主要是須要不斷的考慮,我用的特性 OC 支持不支持,這個類要不要暴露給 OC 使用,如今用了高級特性,萬一未來 OC 要調用要怎麼兼容,很頭痛。

4. Swift ABI 變更

還拿 ABI 說事的也好多年沒寫代碼了吧?Swift 3 4 5 ABI 變更很小,遷移成本不高。另外 Xcode 會支持當前最新版本以及上一個版本的 Swift,好比如今最新的是 4.0,那 3.0 的代碼也能夠編譯。

5. 關於 RN 和 Flutter

RN 有點涼的趨勢,最近蘋果的審覈收緊了,RN 有可能被看成熱更新致使 APP 審覈被拒了。

Flutter 你們還都是玩票,並且應用下來看崩潰率有點過高了。

另外就是 Dart 。。。。一切皆 widget 聽起來很美好,可是寫起來縮進看的快吐了。

推薦👇:

  • 020 持續更新,精品小圈子每日都有新內容,乾貨濃度極高。

  • 結實人脈、討論技術 你想要的這裏都有!

  • 搶先入羣,跑贏同齡人!(入羣無需任何費用)

  • (直接搜索羣號:789143298,快速入羣)
  • 點擊此處,與iOS開發大牛一塊兒交流學習

申請即送:

  • BAT大廠面試題、獨家面試工具包,

  • 資料免費領取,包括 數據結構、底層進階、圖形視覺、音視頻、架構設計、逆向安防、RxSwift、flutter,

     
相關文章
相關標籤/搜索