PDF 阅读器在慢速双指缩放、竖向滚动页高异步更新、页面请求超时和绘画橡皮擦等场景中,存在视口跳动、迟到结果被错误丢弃、缓存边界不明确及笔迹显示与持久化不同步的问题;同一本书的标注读取和并发写入也会产生不必要的磁盘访问或覆盖风险。\n\n调整缩放 inset 计算和竖向阅读锚点恢复,避免缩放变换被重复计入、真实页高到达时改变当前阅读位置。页面请求改为带 token 的超时重试机制,可在缓存窗口内接收有效迟到结果并提供失败重试入口;页面大图、OCR、笔迹和描述缓存统一按当前页前后两页收敛,PDF 标识改为完整内容 SHA-256,避免同名或相近文件复用错误阅读状态。\n\n绘画会话内按路径实时重绘,退出会话后使用按图层派生的位图缓存,确保橡皮擦即时作用于已提交笔迹;同时为笔迹持久化增加版本控制、为标注读写增加同步保护和内存快照,降低复用与并发场景下的状态错乱。\n\n将项目技能统一迁入 .agents/skills,并以 .claude/skills 相对软链接供 Claude Code 读取;新增详细 Git 提交技能,自动审查改动、生成中文提交说明并约束安全推送。 验证:所有项目技能通过 quick_validate;执行 xcodebuild -workspace ReadViewDemo/ReadViewDemo.xcworkspace -scheme ReadViewDemo -configuration Debug -sdk iphonesimulator CODE_SIGNING_ALLOWED=NO build,构建成功。
2.4 KiB
2.4 KiB
name, description
| name | description |
|---|---|
| review-swift-ios-sdk | 对 ReadViewSDK 的 Swift/iOS 代码进行专项审查,覆盖并发、主线程、生命周期、内存、缓存、渲染性能、可访问性、安全、公共 API 和持久化兼容。用户要求继续检查隐藏问题、代码审查、性能或内存审计时使用;普通功能开发和纯文档任务不要单独使用。 |
Swift/iOS SDK 专项审查
工作流
- 明确审查范围和修改授权;只要求审查时不得修改代码。
- 检查工作区和最近改动,读取目标代码、相邻实现及
AGENTS.md路由出的文档。 - 沿入口、异步回调、持久化和渲染结果双向追踪,不只检查单个函数。
- 仅报告能由当前源码证明、可触发且值得行动的问题。
检查维度
并发与生命周期
- UI 是否回到主线程,迟到结果是否会覆盖新状态。
- token、重试、超时和取消是否保证恰好一次完成。
- 闭包、Task、通知、定时器、观察者、WKWebView 和 Vision 请求是否释放。
- PDFKit、缓存字典和持久化文件是否在正确队列或锁内访问。
性能与内存
- 滚动、缩放、绘画和分页热点是否包含同步 IO、重复解码或重复排版。
- EPUB 章节窗口、页图缓存、PDF 页面位图和绘画缓存是否有明确边界。
- 内存警告后可见内容能否恢复,驱逐后迟到回调是否重新撑大缓存。
- 图片像素成本、NSCache 限额、autoreleasepool 和大对象生命周期是否合理。
SDK 兼容性
publicAPI、协议要求、初始化方法和默认行为是否意外 breaking。- Codable、文件名、缓存键、book identifier 和 schema version 是否可迁移。
- EPUB 三种渲染路径和 PDF 两种 Provider 路径是否行为一致。
- podspec 是否包含新增源码、资源、系统 framework 和依赖。
交互、安全与可访问性
- 缩放锚点、Cell 复用、双页布局、手势竞争和绘画图层是否稳定。
- 图标按钮、自定义控件、动态字体和 VoiceOver 语义是否完整。
- 日志、文件路径和错误信息是否泄露敏感数据。
输出
按严重程度列出 findings;每条包含位置、触发条件、用户影响、根因和最小修复建议。没有发现问题时明确说明,并列出尚未覆盖的运行时验证空白。
若用户同时要求修改,沿用对应开发 Skill 的实现、验证和交付规则。