UITextView 回退到 TextKit 1
Jul 27, 2025
iOS 16 开始把 TextKit 2 作为默认的文本渲染引擎,但是一直都有很多小问题,直到 iOS 17 中的 TextKit 2.1 才达到稳定状态,但是在 iOS 18 中苹果又对 TextKit 2 进行了大版本更新,最终对开发者的影响就是如果使用 TextKit 2 而且要兼容 iOS 16 的用户,那么必须自己处理一些列的兼容性问题,这对开发者来说显然得不偿失(即使你只想使用 UITextView 为产品提供简单的编辑功能)。 …
理解 UIControl 的 State 用法
Jun 25, 2025
UIControl 组件有 normal,disabled 和 selected 3 种状态,normal 和 selected 状态下又有 2 种额外的状态 disabled 和 highlighted 状态用来表示被点击时的状态。 所以 state 一共有 6 种有效组合: …
让 Apple AI 相关的域名走代理
Jun 13, 2025
Apple Intelligence、Siri 和搜索 Apple 设备必须能够连接到以下主机,才能处理使用私有云计算的 Apple Intelligence 请求以及处理 Siri 请求,包括听写和在 Apple App 中搜索。 …
iOS 开发:适配 iOS 26
Jun 12, 2025
使用宏判断 SDK 版本 iOS 26 发布了开发者测试版本,Xcode 26 beta 也来了。 开发者需要提前适配新系统,同时有需要兼顾正式版本能正常编译,最好的方案就是根据当前编译的 SDK 版本进行处理,因为要在编译期进行,所以最佳方案就是使用宏: …
在 App 中检测 App Store 的国家地区
May 02, 2025
Epic 对抗 Apple 内购垄断的官司胜诉了,为开发者争取到了在美区中可以引导用户使用第三方支付链接。 对于开发者来说是一个利好消息,可以选择手续费更低的第三方支付,比如 Stripe、PayPal 等。 …
使用 `withUnsafeContinuation` 代替 `withCheckedContinuation` 避免在 iOS 18 中发生崩溃
Mar 11, 2025
问题 在 iOS 18 中,使用 withCheckedContinuation,withCheckedThrowingContinuation 会导致崩溃。 相反的,使用 withUnsafeContinuation,withUnsafeThrowingContinuation 才是安全的方法 😂。 …
iOS 开发中用户数据存放位置的选择
Nov 04, 2024
在 iOS 开发中,用户数据有两类: 用户本地配置、登录状态等清除后会影响功能的数据 缓存数据,比如网络图片等即使被清除了也不影响功能 对于第 1 种数据,应该保存在 Library/Application Support 目录中: …
解密 iOS 18 的 dmg.aea 文件
Oct 04, 2024
iOS 18 开始,Apple 对 ipsw 文件里面的 dmg 进行的加密处理,加密后的文件类型是 dmg.aea 有大牛已经做出来了加密工具:https://github.com/blacktop/ipsw/releases …
iOS 13 新增的创建 Key Window 的方式
Jan 30, 2023
iOS 13 开始,SceneDelegate 取代了原来 AppDelegate 里的大部分代理方法,如果 App 最低系统要求是 iOS 13,那么就不会走原来 AppDelegate 里的代理方法了。 对应地,原来在 didFinishLaunchingWithOptions 里创建 Key Window 的逻辑也需要移到 SceneDelegate 中: …
iOS 越狱后增加网络扩展的内存大小限制
Nov 17, 2022
Jetsam 是 macOS / iOS 系统中的内存监控程序,如果某个服务超出了所能使用的内存限制大小,Jetsam 就会直接把对应的服务或者 App 干掉。 网络扩展是 iOS 9 开始引入的特性,可以让开发者使用自定义的 Tunnel 进行网络通讯,直到 iOS 15 网络扩展的内存限制才从 15MB 提高到 50MB。 …