惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

SecWiki News
SecWiki News
I
InfoQ
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
博客园 - Franky
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园_首页
罗磊的独立博客
V
V2EX
李成银的技术随笔
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
True Tiger Recordings
Vercel News
Vercel News
Cyberwarzone
Cyberwarzone
Cisco Talos Blog
Cisco Talos Blog
F
Fox-IT International blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
M
Microsoft Research Blog - Microsoft Research
Know Your Adversary
Know Your Adversary
爱范儿
爱范儿
The Register - Security
The Register - Security
G
Google Developers Blog
The Hacker News
The Hacker News
Malwarebytes
Malwarebytes
S
Securelist
博客园 - 三生石上(FineUI控件)
Jina AI
Jina AI
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
S
SegmentFault 最新的问题
博客园 - 叶小钗
F
Fortinet All Blogs
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
博客园 - 聂微东
T
Threatpost
博客园 - 【当耐特】
D
Docker
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
G
GRAHAM CLULEY
V
Visual Studio Blog
C
Cisco Blogs
IT之家
IT之家
S
Security Archives - TechRepublic
Latest news
Latest news
阮一峰的网络日志
阮一峰的网络日志

pseudoyu

周报 #109 - Be a whole person 周报 #108 - AI 与创作的困境 周报 #107 - 基于 Multica 与 Impeccable 的开发/设计工作流 周报 #106 - OpenClaw 实践、搬家与生活的能量 周报 #105 - 打破无聊的社会 2025 年末回顾 - Anything different is good 周报 #104 - 被遗忘的生活一隅 周报 #103 - 工作随想与被吞噬的生活 周报 #102 - 我是如何使用 AI 的 周报 #101 - 消失了三个月,我的生活发生了什么变化 周报 #100 - 过去这十年 周报 #99 - 离开 RSS3,迷茫与重启人生 周报 #98 - 生活之书与 Agentic Coding 周报 #97 - 日本旅行小记 28 岁的自白:去找寻自己 周报 #95 - All AI 与 No AI 周报 #94 - 生活的界限与真实感 周报 #93 - 婚礼纪录片与失落的电影院 周报 #92 - 数码产品 Porn 与断舍离 周报 #91 - 一席、消失的时代与自由意志 周报 #90 - OVH 服务器、Coolify 与对 AI Coding 的思考 周报 #89 - 博客改版与 TheWan App 发布 周报 #88 - 方大同、《回留》与人生清单 周报 #87 - 我们主持了自己的宝可梦婚礼,还为它办了一个展 周报 #86 - 用影像打败时间 周报 #85 - 京华烟云 Moment in Peking 周报 #84 - 想起他们 Echos of Reverie 周报 #83 - 年初收纳(房间、设备、服务、软件) 周报 #82 - Brand New Year 与写日记 2024 年末回顾 - 不完美的日子 周报 #81 - Engaged -> Married 与时间的尺度 周报 #80 - 关于求婚、爱情与婚姻 求婚誓言 | 爱的本质是被看见 周报 #79 - 清迈旅居、曼谷之行与 Follow RSSHub 开发实践 #01:Telegram 频道 RSS 订阅实现与部署方案 Follow —— 信息获取的另一种形态 周报 #78 - NAS、Chromebook 与 Zeabur 折腾小记 周报 #77 - 一间只属于自己的房间(对亲密关系的思考) 周报 #76 - 关于 Adulting 的思考 周报 #75 - 回答 Dayu 关于独立博客的 9 个问题 周报 #74 - 清迈异闻录 周报 #73 - 《社交网络》、Ego 与中秋的现充生活 周报 #72 - 滑板体验、Rust Conf 与 Follow 公测(含邀请码) 周报 #71 - Indie App 体验计划 周报 #70 - 消失的附近,Burnout 与 Boreout 周报 #69 - AI Coding 体验与学习的源动力 周报 #68 - 关于写博客这件事与我生活的色彩 使用 GoatCounter 与 Zeabur 搭建网站数据统计系统 周报 #67 - 使用 follow 重塑我的信息输入系统 周报 #66 - 10x 工程师、技术热情与个人工具箱 从零开始搭建你的免费博客评论系统(Remark42 + fly.io) 周报 #65 - Adventure X 体验、Apple Notes 笔记实践与 EpubKit 周报 #64 - 生活在此处(《斯通纳》与《Normal People》) 使用 WebP Cloud 与 Cloudflare WAF 为你的图床添加隐私和版权保护 当云服务器崩溃时,我是如何救援重要数据的 周报 #63 - 不愉快的订花经历、商家和消费者与日渐 AI 化的人 从零开始搭建你的免费图床系统(Cloudflare R2 + WebP Cloud) 2024 年了,我的博客有了什么变化 周报 #62 - 香港之行、5am club 计划与 Rust 学习 周报 #61 - 好朋友的婚礼与对婚姻的思考 27 岁的自白:成长是一件很扫兴的事 周报 #60 - 虫子旁、教育理念与 EpubKit 周报 #59 - 沙漠之行、家庭与家人 周报 #58 - 远程工作这一年 周报 #57 - 生活在别处(巴厘岛之行) 周报 #56 - 面基 Randy 与考科目二 周报 #55 - 油画体验、博客系统升级与对 self-hosting 的思考 周报 #54 - 漂流计划、钱包被盗与 Home Server 周报 #53 - 空白的三个月、生活漂流与春节 周报 #52 - 自谦型人格与感情的另一个视角 周报 #51 - 追星小鹿 Lawrence 与生病 周报 #50 - 天坛漫步、重拾阅读和费曼学习法 周报 #49 - 烧焦的键盘、庞贝神话展、健康调整与神奇的梦 周报 #48 - 内蒙之行、清迈游民、重启的周报与生活 周报 #47 - 采访、拳击与工作状态 周报 #46 - 告别长发、周报初心与合约开发 个人信息获取与知识管理系统(Heptabase + Logseq + Readwise) 周报 #45 - 读书笔记、知识管理与双城生活 周报 #44 - 静寂工人、xLog 与日常 周报 #43 - In the Mood for Love 周报 #42 - 感情观、生活状态与自我 周报 #41 - 生日的仪式感、时间管理与北京之行 26 岁的自白:推石头的人 周报 #40 - 开源之夏、代码之外与流逝的睡眠 周报 #39 - 初患新冠、过去的心绪与失而复得的分享欲 周报 #38 - Foundry、Logseq 与 Surge Ponte 周报 #37 - 浮生半月闲( 武汉 | 香港 | 五月天) 周报 #36 - 肠胃炎、捏捏近况与新的旅途 周报 #35 - 登报、搬家和生病的捏捏 周报 #34 - Don't Stop the Clocks 周报 #33 - 北京 x 故事 x 离别 周报 #32 - 武汉、久别重逢与流动的心绪 周报 #31 - 开源、前端开发与 ChatGPT 实践 周报 #30 - 开源预算、写作初心与对技术的谦卑 Cosmos 区块链架构与 Tendermint 共识机制 周报 #29 - 日语学习经验、Steam Deck 与居酒屋 周报 #28 - Mastodon、故乡与捉迷藏的猫 周报 #27 - 何以为家 周报 #26 - 博客、客制化键盘和新服务器 周报 #25 - 基于 Crossbell 的个人信息输出与同步系统(重构)
周报 #96 - 基于 Roo Code/Cursor 的 iOS 开发工作流
pseudoyu@connect.hku.hk (pseudoyu) · 2025-05-20 · via pseudoyu

前言

weekly_review_96_new

本篇是对 2025-05-132025-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 生成的答案靠谱多了,唯一需要注意的就是甄别一下时效性,很多老版本的实践可能并不适用。

开发环境搭建

xcode_completion

支持 Apple Intelligence 的 macOS 会有一个内置的 Predictive code completion,会下载一个 2.5G 左右的本地模型,在没网的时候可以使用。

xcode_copilot

但比起这个本地模型,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 中需要安装两个插件:

上述依赖都安装完成后

  1. 使用 Cursor 打开项目,需要与 xx.xcodeproj 同级目录
  2. Cmd + Shift + P 调出命令面板,输入/检索 Sweetpad: Generate Build Server Config,选择当前项目
  3. 稍等片刻,会在当前项目根目录下生成一个 buildServer.json 文件

cursor_sweetpad

点开 🍬 图标的侧边栏插件,在项目对应的 schema 上点击 build,选中模拟型或是已连接的实机,会自动编译并运行,就可以实现完全不打开 Xcode 也能进行开发了。

现在再点开所有的代码文件,也不会再出现 imports 错误等一片红的报错,所以再使用 Cursor/Roo Code Agent 进行开发时,也会更准确。

基于 Roo Code + Cursor 的开发工作流

swift_cursor_roocode

在 iOS 开发过程中,或许是因为上下文长度和模型语料的原因,我发现通过 Roo Code 插件配合 gemini-2.5-pro-preview-05-06 模型在一些更大的功能模块拆分、重构等场景下效果显著好于前者(当然,按量计费 token 消耗也夸张很多)。

所以我目前的工作流是通过采用 roocode-workspace 这个项目先让模型理解项目结构并生成 Memory Bank 文件供后续使用;在一些大功能的开发上尽可能多地提供官方文档、博客和自己的 prompts 让 Roo Code 进行开发,同时自己修复一些逻辑性的 bug。

cursor_agents_ios

最后如果有一些比较复杂的报错或 lint error,可以拆分成小的任务单元使用 Cursor + Claude 3.7 Sonnet Thinking 进行修复,虽然是两倍速率消耗,但生成代码的可用性还是更强一些。

目前有几个大的需求都是通过这个工作流辅助开发的,效果还比较满意。

有趣的事与物

输入

虽然大部分有意思的输入会在 「Yu’s Life」 Telegram 频道里自动同步,不过还是挑选一部分在这里列举一下,感觉更像一个 newsletter 了。

我把 Telegram Channel 消息作为内容源搭建了一个微博客 —— 「daily.pseudoyu.com」,可以更方便浏览了。

收藏

文章

视频

电影

  • 我仍在此,久违的在影院看的电影,不得不说因为和巴西友好交流的政治原因使得这部政治性指向明显的(左翼、暴力)的片子能在国内院线上映也是一件很微妙的事…

剧集

音乐