2

私のアプリは多くのカレンダー計算を行うため、これらの関数のほとんどに対して NSCalendar をセットアップする必要があります。他の人もコメントしているように、呼び出し[ NSCalendar currentCalendar ]が非常に遅いように見えるので、NSCalendarのコピーを単純にキャッシュできると思いました. ただし、この NSCalendar は時々、必要なときに新しい NSCalendar を作成しても得られないガベージを生成するようです。「自動参照カウント」を使用しているので、これは驚くべきことです。

助言がありますか。

PS これは、NSCalendar がスレッドセーフではないという事実によるものでしょうか?

PSS

最終的に、メイン スレッドから CurrentCalendar を設定しました。これで問題は解決したようです。誰かがこれについて何かコメントがあれば、私に知らせてください。

R

4

1 に答える 1

0

調査手順として、オブジェクトのクラスをログに記録して、何らかの形で別のオブジェクトに変更されているかどうかを確認することをお勧めします。たとえば、次のコードがある場合:

NSCalendar *cal = [NSCalendar currentCalendar];

その後(特に、データがいつ破損したかを知ることができる場合)、次のようにします。

NSLog(@"Calendar class: %@", [cal class]);

すべてがうまくいったら、__NSCFCalendar を取得する必要があります。

于 2012-11-21T14:49:42.397 に答える