我在一些线程中看到,用户创建类别来共享 NSDateFormatter
的静态实例。
我的应用有多个部分和一个单例
类,每个部分有多个 View ,一些 View 确实使用了NSDateFormatter
。我使用 singleton
在各部分之间共享数据,而无需重复网络连接。
我有点担心 formatters
的成本,为了解决这个问题,我可以在我的 singleton
类和 alloc< 上创建一个方法
, init
一个 formatter
在那里,它会一直存在,我可以使用 category
或者我可以创建一个每个部分的主视图,所以至少我不需要每个 View 都有一个。
我想我的 singleton
上的方法应该是这样的,对吧?
+ (NSDateFormatter *)sharedDateFormatter
{
static NSDateFormatter *sharedDateFormatter = nil ;
if (sharedDateFormatter == nil)
{
sharedDateFormatter = [[NSDateFormatter alloc] init] ;
[sharedDateFormatter setLocale: [[[NSLocale alloc] initWithLocaleIdentifier: @"en_GB"] autorelease]] ;
[sharedDateFormatter setDateFormat: @"YYYY-MM-dd HH:mm:ss ZZZ"] ;
}
return sharedDateFormatter ;
}
我的问题是,降低 NSDateFormatters
成本的最佳做法是什么?
最佳答案
单例很好,但我会使用 dispatch_once 模式。
问题:NSDateFormatter 不是线程安全的。如果您仅在同一个线程上使用同一个 NSDateFormatter,或者例如在同一个串行调度队列中,那很好。否则,您必须使代码线程安全,或者使用多个 NSDateFormatters,每个线程一个。
关于ios - 单例类中的 NSDateFormatter 还是每个部分一个以获得更便宜的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25807642/