DateFormatter
在项目中,许多页面要用到 DateFormatter
,还有许多的日期格式,然后就创建许多 DateFormatter
,而创建 DateFormatter
是需要许多开销的,还是会影响性能的,虽然现在设备的性能很高,但还是值得去优化的。
Apple 的文档中也提到:
Creating a date formatter is not a cheap operation. If you are likely to use a formatter frequently, it is typically more efficient to cache a single instance than to create and dispose of multiple instances. One approach is to use a static variable.
Apple 也给出了一个解决办法,就是使用静态变量,但是这样每次使用都要重新设置日期格式,而且还是线程不安全的。
最后找到一种更好的解决办法,把 DateFormatter
对象保存在线程字典 threadDictionary
里,使用时只要传进来一个时间格式,就返回一个对象,同时也是线程安全的。
1 | extension DateFormatter { |
使用时就很简单了:
1 | let dateformatter = DateFormatter.format("yyyy-MM-dd HH:mm:ss") |
关于日期格式,这里有个网站不错:
- https://nsdateformatter.com/ - Easy Skeezy Date Formatting for Swift and Objective-C