1

在类似日历的应用程序或应用程序的一部分中,我需要在许多例程中使用(公历)日历,这意味着我需要多次分配初始化和释放相同的 NSCalendar 对象。@property(nonatomic,retain)我应该在我的长持久控制器实例中保留一个 NSCalendar(比如公历)作为 ivar( ) 吗?

还是它的实例方法可重入/线程安全?

4

1 回答 1

8

一般来说,您应该保留日历和日期格式化程序,因为第一次创建和/或使用它们的成本很高(我发现这一点很困难)。

但是,线程安全摘要将 NSCalendar 和 NSFormatter(NSDateFormatter 的超类)都列为“线程不安全”,并表示:

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

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

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

于 2011-10-29T01:46:39.830 回答