Privacy Manifest 实战:Required Reason API 与三方 SDK 审计
隐私清单不是又一份“提交前填表”。它要求开发者把应用和 SDK 对某些系统 API 的使用理由写进可随构建交付的文件,再由 Xcode 汇总到最终产物。对 iOS 工程而言,这件事的难点不在 XML 语法,而在...
阅读全文arrow_forward
隐私清单不是又一份“提交前填表”。它要求开发者把应用和 SDK 对某些系统 API 的使用理由写进可随构建交付的文件,再由 Xcode 汇总到最终产物。对 iOS 工程而言,这件事的难点不在 XML 语法,而在...
阅读全文arrow_forward
把一个 iOS 工程拆成很多 Target,并不自动得到模块化。真正决定维护成本的,是依赖有没有方向、边界是否稳定,以及一次改动会不会无意间让大半个工程重新编译。Swift Package Manager(下文...
阅读全文arrow_forward
Objective-C 实现股票 K 线图:数据建模、坐标映射与高性能绘制K 线图看起来只是红绿矩形和几条折线,真正动手后却会发现,它同时考验数据建模、坐标变换、手势状态和绘制性能。价格可能跨越几个数量级,交易...
阅读全文arrow_forward
Live Activity(实时活动)适合展示一件正在发生、用户会反复查看的事情,例如外卖进度、比赛比分、出行状态和倒计时。它能出现在锁定屏幕和灵动岛,但不能简单理解为“刷新得更快的 Widget”:Widge...
阅读全文arrow_forward
主题阅读法:从零散收藏到形成问题地图收藏文章很容易,形成认识很难。面对一个新主题,一种常见做法是先列书单:经典著作、热门新书、长篇访谈一股脑放进去。资料越积越多,“还有几本没读”逐渐代替了最初的问题。最后可能留...
阅读全文arrow_forward
Observation:SwiftUI 状态更新机制的新变化WWDC23 带来的 Observation 框架,看起来只是把 ObservableObject 和一组 @Published 换成了 @Obser...
阅读全文arrow_forward
现金流量表里真正值得追踪的五个信号利润表告诉我们公司在会计规则下赚了多少钱,现金流量表则回答另一个更朴素的问题:钱到底有没有进来,又去了哪里。两张表都重要,但当利润增长、账上现金却持续减少时,现金流往往更早暴露...
阅读全文arrow_forward
从 GCD 到 async/await:iOS 并发迁移的边界与落地async/await 最吸引人的地方是代码终于可以按执行顺序阅读,但把回调改成 await 并不等于完成了并发迁移。真正困难的部分,是重新说...
阅读全文arrow_forward
iOS邮件开发整理邮件协议常见的邮箱协议有 SMTP、POP3、IMAP等 Simple Mail Transfer Protocol(SMTP) SMTP是互联网上的一种通讯协议,主要功能...
阅读全文arrow_forward
iOS画中画总结之前在做iOS的音视频播放的时候,iOS小窗播放音视频退到后台后启用画中画功能,遇到一些坑,记录一下,做一些总结通过分析B站等一些视频播放APP发现,B站播放视频开启小窗后,播放在APP内变成小...
阅读全文arrow_forward
最近读完宋鸿兵编著的《货币战争》,把书中的主要人物、事件和观点重新整理了一遍。这本书不是按照普通经济学教材的方式讲货币,而是把货币发行、银行信用、战争和政治权力放在同一条叙事线上。作者反复追问一个问题:谁能够影...
阅读全文arrow_forward
vim的简介vim一项很好用的工具, 所有的 Unix Like 系统都会内建 vi 编辑器vi编辑器有三种模式 命令模式(Command mode) 输入模式(Insert mode) 底线命令模式(L...
阅读全文arrow_forward
公司收入增长时,最容易被忽略的问题是:新增收入要先占用多少现金?客户还没有付款,库存已经采购,供应商账期却尚未到期。利润表可能看起来很热闹,现金流量表却告诉我们企业正在为增长预付资金。理解营运资本,正是把“增长...
阅读全文arrow_forward
iOS 本地存储经常从一句“先存起来”开始,最后却变成迁移失败、敏感信息泄露、清理后状态错乱和启动变慢。问题通常不在 API 不够多,而在数据性质没有先被说清楚:这是偏好设置、登录凭证、可重新下载的缓存,还是必...
阅读全文arrow_forward
iOS 通知的难点从来不是把一条消息送到手机,而是决定它是否值得打断用户。2021 年 iOS 15 引入通知摘要和中断级别后,应用不再能简单地把“紧急”写进标题就获得即时展示。系统会综合应用声明、用户授权、专...
阅读全文arrow_forward
什么是卡顿卡顿就是在应用使用过程中出现界面不响应或者界面渲染粘滞的情况。而应用界面的渲染以及事件响应是在主线程完成的,出现卡顿的原因可以归结为主线程阻塞。在开发过程中,遇到的造成主线程阻塞的原因可能是: 主线...
阅读全文arrow_forward
异步测试最容易给人一种“把等待时间调大就好了”的错觉。测试偶尔失败,先把 timeout 从 1 秒改成 10 秒;回调偶尔触发两次,就把断言删掉;网络偶尔慢,就在测试里 sleep。这样的测试也许暂时变绿,却...
阅读全文arrow_forward
安装Jenkins 安装包安装 HomeBrew安装安装包安装 由于Jenkins 依赖于Java,所以在安装Jenkins前,需要先检查是否已安装Java环境。 在终端输入命令进行检测:$ java -...
阅读全文arrow_forward
组件化经常被描述成“把工程拆成多个仓库”,但仓库数量从来不是目标。真正要解决的是:一处业务变化时,影响范围能否被看见;一个模块需要被复用时,依赖是否清楚;团队并行开发时,构建和发布是否仍然可控。工具只是把这些边...
阅读全文arrow_forward