fae7b3da82040307a396d846abc5604ec037cd7c
补在 LaunchScreen 案例后,记录本轮发现:
- 症状:基于 Contract §附录 A 实现 window.settings.getXxx() polyfill 后
H5 行为不对,user 反馈"读不到数据"
- 错误做法:把附录 A 9 项 getter 实现为 polyfill,认为是 H5 主路径
- 原项目真相:grep "var app_" 在 daoqi/msext NewRootVC.m:1204 /
gameController.m:2160 / AppDelegate.m:259,发现 H5 主路径是写 .js 文件
+ <script src> 同步引入预生成的全局变量(不是 polyfill 函数)
- 同时发现 Contract §4.2 本身也写错(漏 6 项 / 多 2 项 / 文件名变量名混淆)
- 修复:撤销 §3.4.1 polyfill / 新增 §7.5 app_*.js 预注入 / 全面修订
Contract §4.2
教训 3 条:
1. 文档与代码冲突时原项目代码是真理。Contract 也可能写错(10 年前
写就的文档遗漏/误传是常态),必须用 grep 验证字面字符串
2. 优先验证字面字符串、不要依赖语义猜测:app_getbattery vs app_battery
一字之差,凭"应该就是 app_battery 吧"100% 犯错
3. iOS 最低系统版本是契约边界的天然过滤器:契约明示可不实现的旧接口
新项目应主动剔除,不要"出于完备性"反而做一份用不到的实现
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Description
No description provided
24 MiB
Languages
Swift
94.5%
Objective-C++
2.9%
JavaScript
1.8%
C
0.6%
Objective-C
0.2%