NSDate 变量的字符串插值是不好的做法吗?

Is string interpolation bad practice for NSDate variables?

一个 UICollectionViewCell 包含一个 UILabel,文本设置为:

textLabel.text = String(format: "\(aDate)", arguments: [])

我观察到 aDate 文字导致集合视图滚动明显滞后。 aDate 不是延迟加载变量而是简单的 var aDate: NSDate?。顺便说一句,我不只使用 textLabel.text = "\(aDate)" 的原因是该字符串实际上包含更多文字。

NSDate 变量插入字符串是不好的做法吗? 我必须使用 NSDateFormatter 吗?

每当您想向用户显示 NSDate 对象时,您应该使用 NSDateFormatter,这将确保根据用户的区域设置、设置日历和一般显示首选项将日期正确显示给用户。这被认为是最佳实践。您还应该对任何数字表示、名称、距离或其他显示字符串执行相同的操作,这些字符串可能会因您在地球上的位置而在文化上有所不同。

滚动滞后的问题是由于标签的NSLayoutConstraints。解决方案是将标签锚定到 UICollectionViewCell 内容视图,而不是内容视图内的其他视图。通过 Allocations Instruments 分析发现了这一点。