カレンダーのようなアプリ、またはアプリの一部では、多くのルーチンで (グレゴリオ暦) カレンダーを使用する必要があります。つまり、同じ NSCalendar オブジェクトを何度も割り当てて初期化し、解放する必要があります。1 つの NSCalendar (グレゴリオ暦など) を ivar( ) として保持@property(nonatomic,retain)
して、長い永続的なコントローラー インスタンスに保持しますか?
または、そのインスタンスメソッドは再入可能/スレッドセーフですか?
カレンダーのようなアプリ、またはアプリの一部では、多くのルーチンで (グレゴリオ暦) カレンダーを使用する必要があります。つまり、同じ NSCalendar オブジェクトを何度も割り当てて初期化し、解放する必要があります。1 つの NSCalendar (グレゴリオ暦など) を ivar( ) として保持@property(nonatomic,retain)
して、長い永続的なコントローラー インスタンスに保持しますか?
または、そのインスタンスメソッドは再入可能/スレッドセーフですか?
一般に、カレンダーと日付フォーマッターは、最初に作成および/または使用するのに費用がかかるため、手元に置いておく必要があります (これは難しい方法であることがわかりました)。
ただし、Thread Safety Summaryには、NSCalendar と NSFormatter (NSDateFormatter のスーパークラス) の両方が「Thread-Unsafe」としてリストされています。
次のクラスと関数は通常、スレッドセーフではありません。ほとんどの場合、これらのクラスは、一度に 1 つのスレッドからのみ使用する限り、どのスレッドからでも使用できます。詳細については、クラスのドキュメントを確認してください。
両方を行う方法を探すことをお勧めします。これは、NSThread を使用して自分でスレッドを作成する利点の 1 つです。各スレッドのカレンダーをそのスレッド ディクショナリに隠しておくことができます。
そうしないと、毎回各カレンダーを作成して破棄し、パフォーマンス コストを支払う必要があります。