我应该保留NSCalendar对象以供持久使用吗?

Zha*_*Chn 1 cocoa objective-c foundation nscalendar ios

在类似日历的应用程序或应用程序的一部分中,我需要在许多例程中使用(格里高利)日历,这意味着我需要多次使用alloc-init并释放相同的NSCalendar对象.我应该@property(nonatomic,retain)在我的长持久控制器实例中保留一个NSCalendar(比如格里高利历)作为ivar()吗?

或者它的实例方法是重入/线程安全的?

Pet*_*sey 7

一般来说,你应该保留日历和日期格式化程序,因为它们在第一次创建和/或使用时很昂贵(我发现这很难).

但是,线程安全摘要将NSCalendar和NSFormatter(NSDateFormatter的超类)列为"线程不安全",并说:

以下类和函数通常不是线程安全的.在大多数情况下,只要您一次只使用一个线程,就可以从任何线程使用这些类.查看课程文档以获取更多详细信息.

我建议寻找两种方法.这是使用NSThread自己创建线程的一个优点:您可以在线程字典中存储每个线程的日历.

否则,您只需每次创建并丢弃每个日历并支付性能成本.