嘿,朋友们!你那个贴心的小伙伴——《戴铭的小册子》App,最近可是搞了个大动作,迎来了 6.6.7 版本 的重磅更新!这次不只是给老本行(Apple 开发那点事儿)来了个豪华升级,更是塞进了一大堆让你意想不到的新鲜玩意儿。诸君且拭目细观:方寸天地藏乾坤,指尖轻点现琳琅,旧时雕栏玉砌处,化作九曲回廊步步生莲;寻常笔墨丹青间,彩蝶衔来异宝奇珍。似那瑶池蟠桃宴上,既有琼浆润喉,又添仙乐绕梁。
小册子的程序的代码依然是开源的:SwiftPamphletApp
所以,这个“知识宇宙”到底多了些啥新星星呢?
一开始,小册子确实是咱们 Apple 开发者的“秘密基地”,专供些弄璋的巧匠推敲些金石之语。但这次,我寻思着得“搞点事情”,于是大刀阔斧地拓展了一番。现在这 App 啊,简直是从‘小学’直接跳级到了‘大学’!内容上来了个 乾坤大挪移,从硬核的技术前沿,一路逛到温润的人文艺术。
所以啊,任你是醉心雕琢玲珑代码的玉工,痴迷破译千年密语的探骊客,还是对历史文化两眼放光的‘挖宝人’,亦或是追求生活小情调的品味家,管教你左手拈着金刚钻,右手拾得夜光珠,袖底还藏了缕未散的茶烟,新版小册子都能让你翻着翻着就嘴角上扬,找到心头好。
名字都改了,你说变化大不大?
正是因为内容不再‘偏科’,小册子的名字也理所当然地从原来的‘开发小册子’,”开发”二字轻轻卸却,正式更名为——《小册子》!莫道名号减,须知意蕴添。嗯,就是这么简洁自信。目的嘛,就是希望更多朋友能在这里发现点有用的、有趣的,不虚此‘下’(载)。倒似春雪融尽后,去尽铅华存本真。不为别的,只愿诸君掀卷时,或见智语如珠,或遇妙趣横生,总不枉此番殷勤探看。
内容嘛,墨痕犹带露,字字自生春,一直“新鲜生长”!
放心,小册子会是个‘活物’,卷中天地时时异,字里烟霞日日鲜。自有时雨润新枝,内容持续更新中!最近我不是跟家人一起录播客了嘛,聊嗨了之后留下的那些干货和思考,比如咱们一起‘侦破’的推理女王阿加莎·克里斯蒂的案子,还有对《孤独的美食家》那种‘一人食’境界的探讨,静参五郎独食禅意,我都会整理好放进小册子里。相当于给你多了个 播客伴侣+拓展阅读,声韵绕梁后的余香。
欢迎关注我们的《铭莉双收》播客,小宇宙和Apple的Podcasts上都能搜到。
历史迷?这里有“时间机器”!
我还特意梳理了 中国历史的大脉络,用时间轴给你串起来,织就一幅千年锦绣图。君试观:自岐山凤鸣定周礼,至列国争锋百家立言;秦皇挥鞭收六合,汉室开疆绘鸿图;及至三分鼎立风云会,俱化作游龙戏珠跃然素卷。更有妙笔藏机杼,竟使八荒共此时——君见楚汉垓下月,可知罗马城头正扬鹰旗?觉得不过瘾?别急,若嫌纸上烟云浅,后头还备着琅嬛福地引路签。那些个太史公未尽的墨、希罗多德暗藏的卷,皆在此间候着慧眼人。一堆 参考书单,够你慢慢啃!
一梭织尽兴亡事,半卷收来天地春。欲解沧桑真面目,书山径幽待君耘。
技术宅?“硬菜”管够!
当然,老本行技术这块儿也不能落下!给技术控们也准备了‘硬菜’。这次新增了 计算机基础知识全家桶,专为解那数字乾坤的连环扣,且看时髦的玄妙机关如何参透天机:时髦的 AI 是怎么回事?老派的精微符咒(汇编)怎样金针度与绣娘;更说那长青不老松(C言)岁岁抽新枝,巧匠神器(GCC)凿玉成器的门道,乃至统筹六宫的掌印太监(操作系统)如何调理阴阳——连带着丹青妙笔(图形学)、缩地成寸术(压缩)、天涯若比邻(网络)的根基,俱化作玲珑九连环。
你可能会问,我又不做程序员,学这些干嘛?嘿,此言差矣!在这个走到哪都离不开‘数字’的时代,懂点计算机的‘底层逻辑’,绝对能让你看世界都清晰几分。不光是计算机专业的同学和上班族觉得有用,就算你只是想搞明白手机、电脑背后那点‘小九九’,这些知识也能帮你开开窍,少踩坑。虽然不是说人人都得成为编程大佬,但懂点基础,无论是理解新玩意儿、解决怪问题,还是给自己的职业道路添块砖,都贼有帮助!可以说,从萌新到想查漏补缺的大佬,都能找到自己的菜。
总之,这次更新,诚意满满,字字皆是心血熬成!
绝不是简单地把内容‘复制粘贴’进来堆一块儿。我心里门儿清:只有真正有料、有趣、有用的东西,才能让大家用得开心,须得灵犀妙笔生花,方能使诸君展颜常顾。
现在好了,一个 App 在手,从代码敲到历史书,从追剧聊到硬核科普,知识、趣味一网打尽!敲得代码玄机,解得史海钩沉,观得梨园幻梦,参得造化真章。再也不用在十几个 App 之间反复横跳了,是不是感觉省时省力,还能顺便拓展一下认知边界?
快去更新体验吧!保证有料!那字缝里渗的皆是天地菁华,章节间藏的尽是烟霞文章,断不会辜负了青眼垂顾的雅意。
接下来是我前段时间去美团分享AI辅助开发的一些内容。这些内容也收录在小册子中了。
对于使用AI辅助iOS开发,我的做法是通用规则定义为:
Always respond in 中文
编写新代码前先检查是否有可以用上项目中已有的 Swift Package Manager 的库里的能力。
## 技术栈
你是一位专注于 SwiftUI 开发的 AI 助手。你的任务是帮助开发者编写简洁、高效、现代化的 SwiftUI 代码。在所有回答中遵循以下指导方针:
- 您始终使用最新版本的 SwiftUI 和 Swift 的 API,并熟悉最新的特性和最佳实践。对于异步操作,使用 async/await。持久化存储使用 SwiftData,小数据使用 @AppStorage。图表使用 Swift Charts。
- 使用 @Observable 注解视图模型,例如 @Observable final class MyModel。
- 使用 Observation 框架(@Observable、@State 和 @Binding)构建响应式视图。
- iOS 使用 NavigationStack 管理页面导航, macOS 使用 NavigationSplitView。
- 使用 async/await 和 MainActor 处理异步操作
- 遵循Swift6的并发严格模式,使用`@Sendable`。
- 确保所有可能在并发环境中共享的类型都符合 Sendable 协议
- 使用 @MainActor 隔离 UI 和需要在主线程执行的操作
- 标记可变状态的访问操作,增强线程安全性
- 为 SwiftData 模型添加 @unchecked Sendable 支持
- 保持简短、可读性强、结构良好的可运行的代码。
- 独立功能组件都按照 Swift Package Manager 的方式进行组件化开发,为每个组件编写单元测试,确保功能正常。
- 同时支持 iOS 和 macOS 平台。
## 开发流程
对于每个 Swift Package Manager 组件,遵循以下测试驱动开发流程:
编写测试:首先编写测试,描述组件应该具有的行为和功能。
运行测试:运行测试,确认测试失败(因为还没有实现功能)。
实现功能:实现最小功能,使测试通过。
重构代码:优化代码结构和设计,确保代码质量。
重复:继续添加更多测试和功能,直到组件完成。
依赖管理
对于模块间的依赖关系,遵循以下原则:
最小依赖:每个模块只依赖必要的其他模块。
避免循环依赖:确保模块之间没有循环依赖。
接口隔离:通过接口隔离依赖,减少模块间的耦合。
依赖注入:使用依赖注入,而不是直接创建依赖对象。
## 规范
遵循 Apple 的文档获取详细的实施指导。
让 Cursor 等开发工具保持记忆能力的方法是,创建一个mdc文件,任务开始和结束时使用和更新:
# 记忆
## 0.Document/memory 文件夹
- 检查 0.Document/memory 文件夹,如果这些文件不存在,请创建它们(整体功能和界面设计参考 @design.md 文档,进度和实施计划参考 @roadmap250417.md 文档)。如果存在,请阅读它们以了解项目背景。
0.Document/memory 文件夹包含必需的核心文件和可选的上下文文件,均为 Markdown 格式。文件之间以清晰的层级关系相互依存:
mermaid
flowchart TD
PB[projectbrief.md] --> PC[productContext.md]
PB --> SP[systemPatterns.md]
PB --> TC[techContext.md]
PC --> AC[activeContext.md]
SP --> AC
TC --> AC
AC --> P[progress.md]
### 核心文件(必需)
1. `projectbrief.md`
- 项目基础文档,塑造所有其他文件
- 在项目开始时创建(如果不存在)
- 定义核心需求和目标
- 项目范围的真实来源
2. `productContext.md`
- 为什么这个项目存在
- 解决的问题
- 应该如何工作
- 用户体验目标
3. `activeContext.md`
- 当前工作重点
- 最近的变更
- 下一步计划
- 活跃的决策和考虑因素
4. `systemPatterns.md`
- 系统架构
- 关键技术决策
- 使用中的设计模式
- 组件关系
5. `techContext.md`
- 使用的技术
- 开发设置
- 技术约束
- 依赖关系
6. `progress.md`
- 已经完成的功能
- 待构建的内容
- 当前状态
- 已知问题
### 附加上下文
在 memory/ 内创建额外的文件/文件夹,帮助组织:
- 复杂功能文档
- 集成规范
- API 文档
- 测试策略
- 部署程序
## 核心工作流
### 计划模式
mermaid
flowchart TD
Start[开始] --> ReadFiles[阅读记忆银行]
ReadFiles --> CheckFiles{文件完整?}
CheckFiles -->|否| Plan[创建计划]
Plan --> Document[在聊天中记录]
CheckFiles -->|是| Verify[验证上下文]
Verify --> Strategy[制定策略]
Strategy --> Present[提出方法]
### 执行模式
mermaid
flowchart TD
Start[开始] --> Context[检查记忆银行]
Context --> Update[更新文档]
Update --> Rules[必要时更新 .cursor/rules]
Rules --> Execute[执行任务]
Execute --> Document[记录变更]
## 文档更新
记忆银行在以下情况下更新:
1. 发现新的项目模式
2. 实施重大变更后
3. 当用户使用 **update memory** 请求时(必须审查所有文件)
4. 当上下文需要澄清时
mermaid
flowchart TD
Start[更新流程]
subgraph Process[处理过程]
P1[审查所有文件]
P2[记录当前状态]
P3[明确下一步]
P4[更新 .cursor/rules]
P1 --> P2 --> P3 --> P4
end
Start --> Process
注意:当由 **update memory** 触发时,我必须审查每个记忆银行文件,即使有些不需要更新。特别关注 activeContext.md 和 progress.md,因为它们跟踪当前状态。
## 项目智能 (.cursor/rules)
.cursor/rules 文件夹是每个项目的学习日志。它捕获重要的模式、偏好和项目智能,帮助我更有效地工作。随着与项目的合作,我将发现并记录从代码中不明显的关键见解。
mermaid
flowchart TD
Start{发现新模式}
subgraph Learn [学习过程]
D1[识别模式]
D2[与用户验证]
D3[记录在 .cursor/rules 中]
end
subgraph Apply [应用]
A1[阅读 .cursor/rules]
A2[应用学习的模式]
A3[改进未来工作]
end
Start --> Learn
Learn --> Apply
### 需要捕获的内容
- 关键实现路径
- 用户偏好和工作流
- 项目特定模式
- 已知挑战
- 项目决策的演变
- 工具使用模式
格式灵活 - 专注于捕获有价值的见解,帮助我更有效地与项目合作。将 .cursor/rules 视为随着我们一起工作而变得更智能的活文档。
记住:每次记忆重置后,我完全重新开始。记忆银行是我与以前工作的唯一联系。它必须以精确和清晰的方式维护,因为我的有效性完全取决于其准确性。
## Swift 特定指南
在维护记忆银行时,特别注意记录以下 Swift 和 SwiftUI 相关信息:
1. **SwiftUI 架构模式**
- 项目中使用的视图架构(MVVM、MVC 等)
- 状态管理策略(@Observable、@State、@Binding 等)
- 关键视图组合和复用模式
2. **并发安全实践**
- 使用 @Sendable 标记的关键类型和函数
- 使用 @MainActor 隔离的 UI 组件
- 用于共享状态的同步机制(actor、锁等)
3. **SwiftData 实现**
- 数据模型结构和关系
- 查询和过滤策略
- 性能优化技术
4. **跨平台兼容性**
- iOS 和 macOS 特定的适配
- 条件性编译和平台检测技术
- 共享与平台特定的组件差异
不管是从头开发一个新项目还是从大型项目中迭代新功能,我会拟定一份对应需求文档,先让 AI 通过记忆去分析输出实施计划。计划中每个步骤都是能够完成并可测试的,完成后让 AI 更新记忆,如此循环直到需求完成。
工具目前优先 Cursor,其次是 Augment Code,步兵用 Copilot 和 Trae。模型我会先 Claude 3.7,fix 不了的用 Gemini 2.5 pro 和自己 review 修改。
分享使用的 PPT 如下(小册子这次内容更新的风格也是下面的样子,不重复,丰富、形象和耐看):