我為什么痛恨 iOS 原生 UIKit 開發(fā)

<p>做 iOS 原生開發(fā)的頭十年渾渾噩噩的,也沒覺得有什么不妥。直到 2022 年我用 SwiftUI 開發(fā)了幾個 App,才發(fā)現(xiàn)之前原生開發(fā)方式有很大的問題。</p><p>使用 UIKit 開發(fā)時,只能一遍又一遍地運行項目。每次改動一行代碼,為了查看效果就得重新運行項目。雖然項目可以只編譯改動的文件,但是每次運行項目不僅僅是在編譯,還包含很多其它的流程,例如將代碼和資源拷貝到設備中,這些流程都非常占用時間。</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2564398-7f06b7c595bde6e4.jpeg" img-data="{"format":"jpeg","size":28761,"width":854,"height":480,"space":"srgb","channels":3,"depth":"uchar","density":72,"chromaSubsampling":"4:2:0","isProgressive":false,"hasProfile":false,"hasAlpha":false}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>特別是做 UI 的精細調(diào)整時,需要對照設計稿和設計師的需求進行像素級的調(diào)整,這讓我對一次又一次運行項目產(chǎn)生了巨大的懷疑和抵觸。</p><p>一天下來可能要運行幾十次到上百次,每次運行都要等待 30 秒到 3 分鐘左右。如果按照一天運行一百次來算,所消耗的時間大約有 1.5 個小時。</p><p>一個 iOS 開發(fā)者每天都要被白白消耗掉 1.5 個小時的生命,想想實在是太可怕了。但是公司的工作又讓我不得不用 UIKit 來開發(fā)。如果允許使用 Storyboard 和 Xib 會稍微有所緩解,但仍然無法避免需要一次又一次運行項目的問題。而且我現(xiàn)在所在的公司是禁止使用 Storyboard 和 Xib 的,可能是出于性能等原因的考慮。</p><p>因此在工作之余,我就用 SwiftUI、Vue.js 等來做自己的項目,以此獲取內(nèi)心的平衡。相比之下,我覺得開發(fā)前端實在是太爽了。配置好 LiveServer 這樣的工具,加上 VSCode 這類開發(fā)工具的自動保存功能,改動完代碼后立刻就能看到效果??梢杂脙蓚€顯示器,一個編寫代碼,另一個實時看代碼的結(jié)果,簡直不要太爽。</p><p>SwiftUI 雖然也能實時預覽,但是一旦項目復雜起來,某個視圖依賴的東西太多、層次太復雜,實時預覽就很容易失敗,或者需要很長時間才能刷新出來。經(jīng)過多個版本 Xcode 的迭代,蘋果還是沒有解決這個問題。</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/2564398-f8e672d33918d9c0.jpeg" img-data="{"format":"jpeg","size":6632,"width":683,"height":295,"space":"srgb","channels":3,"depth":"uchar","density":72,"chromaSubsampling":"4:2:0","isProgressive":false,"hasProfile":false,"hasAlpha":false}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>我現(xiàn)在經(jīng)常很懷疑人生,為什么我當初要選擇做 iOS 開發(fā)。而且 iOS 開發(fā)現(xiàn)在可能是最難找工作的領(lǐng)域之一。</p><p>好在最近公司準備用 RN 了。用 RN 寫了幾個簡單的 App demo 之后,我覺得實在是太爽了。基本上和前端開發(fā)一樣,可以做到實時預覽效果。</p><p>人是需要反饋的動物,行為如果沒有得到反饋,那么就會非常沮喪。相比于可以實時獲得反饋,等待一分鐘以上才能獲得反饋同樣令人沮喪。</p><p>考慮到現(xiàn)在還有大量的公司沒有開始用 SwiftUI 開發(fā),SwiftUI 只能用于開發(fā)蘋果生態(tài)中的應用,并且越來越多的公司開始提供對鴻蒙的支持,跨平臺技術(shù)的前景應該會越來越好。</p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容