前言#
本篇是對 2025-05-13
到 2025-05-18
這周生活的記錄與思考。
記錄一下學習 iOS/SwiftUI 開發的一些資源和基於 Roo Code 與 Cursor 的 iOS 開發環境搭建和工作流。
iOS/SwiftUI 開發#
學習資源#
最近工作中有涉及一些 iOS 相關的開發,雖然之前做「TheWan App」的時候也是用的 SwiftUI,但因為是很個人的項目,基本上就是完成了功能,並沒有追求什麼最佳實踐。所以這次就趁著五一重新補充了一下基礎知識。
- Apple - SwiftUI,官方文檔。
- Apple - SwiftUI Tutorials,Apple 官方也有一個互動式的 SwiftUI 教程,關於佈局、動畫相關的相關概念會更加形象。
- SwiftUI 新手入門課程,ChaoCode 的入門教程應該算是最簡潔易懂的教程了,難度不高但是講解得很清晰,看完後基本上就能做一些小項目了。
- CS193p - Developing Apps for iOS,Standford 的一門很經典的 iOS 開發課程,2023 年的課程也轉向了 SwiftUI,質量很高,看完後能更多理解 MVVM 設計模式和一些更底層的概念。
- 肘子的 Swift 記事本,有很多精品的文章,關於 Swift Data 的最佳實踐我都是參考的他的博文。
- 13 的 iOS Developer+,平時有看他的 Newsletter,他也正在連載 SwiftUI 的教程,在考慮學習深入一點之後訂閱學習。
搜索一些具體的概念、實踐時可以直接 Google 搜索,能查到一些 medium 或其他平台上的文章,參差不齊,不過目前還是比 LLMs 生成的答案靠譜多了,唯一需要注意的就是甄別一下時效性,很多老版本的實踐可能並不適用。
開發環境搭建#
支持 Apple Intelligence 的 macOS 會有一個內置的 Predictive code completion,會下載一個 2.5G 左右的本地模型,在沒網的時候可以使用。
但比起這個本地模型,GitHub Copilot 為 Xcode 提供的官方插件更強大,使用起來除了補全,也有一個 Chat 欄,可以很方便地指定 Xcode 中正在打開的一些文件進行提問,也支持 Claude 3.7 Sonnet Thinking 等最新模型,不過目前還沒提供和 VS Code 中類似的 Agents 功能。
但習慣了 Cursor 的 Agents 模式後,僅僅通過 Xcode 中的 Chat 輔助開發已經有些不夠用了,好在 Cursor/VS Code 也通過一些插件對 SwiftUI 提供了一些支持 ——
首先是安裝一些命令行工具:
可以通過 brew 一鍵安裝或在上述 GitHub Repo 中分別安裝
brew install xcode-build-server xcbeautify swiftformat
Cursor/VS Code 中需要安裝兩個插件:
上述依賴都安裝完成後
- 使用 Cursor 打開項目,需要與
xx.xcodeproj
同級目錄 - 按
Cmd + Shift + P
調出命令面板,輸入 / 檢索Sweetpad: Generate Build Server Config
,選擇目前項目 - 稍等片刻,會在當前項目根目錄下生成一個
buildServer.json
文件
點開 🍬 圖標的側邊欄插件,在項目對應的 schema 上點擊 build,選中模擬型或是已連接的實機,會自動編譯並運行,就可以實現完全不打開 Xcode 也能進行開發了。
現在再點開所有的代碼文件,也不會再出現 imports 錯誤等一片紅的報錯,所以再使用 Cursor/Roo Code Agent 進行開發時,也會更準確。
基於 Roo Code + Cursor 的開發工作流#
在 iOS 開發過程中,或許是因為上下文長度和模型語料的原因,我發現通過 Roo Code 插件配合 gemini-2.5-pro-preview-05-06
模型在一些更大的功能模塊拆分、重構等場景下效果顯著好於前者(當然,按量計費 token 消耗也誇張很多)。
所以我目前的工作流是通過採用 roocode-workspace 這個項目先讓模型理解項目結構並生成 Memory Bank 文件供後續使用;在一些大功能的開發上盡可能多地提供官方文檔、博客和自己的 prompts 讓 Roo Code 進行開發,同時自己修復一些邏輯性的 bug。
最後如果有一些比較複雜的報錯或 lint error,可以拆分成小的任務單元使用 Cursor + Claude 3.7 Sonnet Thinking 進行修復,雖然是兩倍速率消耗,但生成代碼的可用性還是更強一些。
目前有幾個大的需求都是通過這個工作流輔助開發的,效果還比較滿意。
有趣的事與物#
輸入#
雖然大部分有意思的輸入會在 「Yu's Life」 Telegram 頻道裡自動同步,不過還是挑選一部分在這裡列舉一下,感覺更像一個 newsletter 了。
我把 Telegram Channel 消息作為內容源搭建了一個微博客 —— 「daily.pseudoyu.com」,可以更方便瀏覽了。
收藏#
文章#
- iOS Silent Notification Problem - How they mess up your app's lifecycle and Amplitude session events,iOS 靜默通知的實踐。
視頻#
電影#
- 我仍在此,久違的在影院看的電影,不得不說因為和巴西友好交流的政治原因使得這部政治性指向明顯的(左翼、暴力)的片子能在國內院線上映也是一件很微妙的事...
劇集#
- 最後生還者 第二季,非遊戲黨,看完第一季印象比較深,追一下。
- 愛,死亡和機器人 第四季,感覺質量退化 / 想像力枯竭的程度超過黑鏡了... 感覺太多刻意的隱喻會有些故弄玄虛。