单例类中的NSDateFormatter或每个部分的一个代价较低的代码?

时间:2014-09-12 11:48:52

标签: ios objective-c singleton nsdateformatter

我在一些线程上看到,用户创建类别以共享NSDateFormatter的静态实例。

我的应用有多个部分和一个singleton类,每个部分都有多个视图,有些视图使用NSDateFormatter。我使用singleton在部分之间共享数据,而不必重复网络连接。

我很少担心formatters的费用,为了解决这个问题,我可以在singleton班级和alloc上创建一个方法,{{1} } init那里,它会在整个时间内,我可以使用formatter或者我可以在每个部分的主视图上创建一个,所以至少我不需要每个视图一个。

我想category上的方法就是这样,对吗?

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 ; } 费用的最佳做法是什么?

1 个答案:

答案 0 :(得分:3)

单身就好了,但我会使用dispatch_once模式。

问题:NSDateFormatter不是线程安全的。如果您仅在同一个线程上使用相同的NSDateFormatter,或者例如在同一个串行调度队列中,那就没问题。否则,您必须使代码线程安全,或者使用多个NSDateFormatters,每个线程一个。