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
相关产品推荐
相关产品推荐

