You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RelativeDateTimeFormatter内存泄漏问题寻求解决方案

解决RelativeDateTimeFormatter内存泄漏问题

你的代码每次调用timeAgoDisplay()都会创建一个新的RelativeDateTimeFormatter实例,频繁调用会导致内存无法及时释放,同时浪费系统资源。可以通过将格式化器设为静态属性,仅初始化一次来解决:

extension Date {
    func timeAgoDisplay() -> String {
        // 静态存储属性,仅在首次访问时初始化
        static let formatter: RelativeDateTimeFormatter = {
            let formatter = RelativeDateTimeFormatter()
            formatter.unitsStyle = .full
            return formatter
        }()
        return formatter.localizedString(for: self, relativeTo: Date())
    }
}

原理说明

  • 静态存储属性(static let)在App整个生命周期中只会初始化一次,避免了重复创建实例带来的内存开销和泄漏风险。
  • RelativeDateTimeFormatter本身是线程安全的,无需担心多线程调用问题。

内容的提问来源于stack exchange,提问作者Alama Yasein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 10:48:17