バックグラウンド スレッドで sizeWithFont を呼び出しています。この sizeWithFont は、バックグラウンド スレッドの NSOperationQueue で呼び出される drawRect にあります。sizeWithFont でランダムにクラッシュすることがありました。私はグーグルで調べてきましたが、これはアップルの問題だと言う人もいるようです。これを修正するより良い方法は何ですか?
ドキュメントには、iOS 4 の時点で次のように記載されています。
UIKit でのグラフィックス コンテキストへの描画がスレッドセーフになりました。具体的には: グラフィック コンテキストへのアクセスと操作に使用されるルーチンは、異なるスレッドに存在するコンテキストを正しく処理できるようになりました。文字列と画像の描画がスレッドセーフになりました。複数のスレッドでの色とフォント オブジェクトの使用が安全になりました。
私はこのようなものを持っています:
titleSize = [storyTitleString sizeWithFont:[UIFont fontWithName:kProximaNovaBold size:15] constrainedToSize:CGSizeMake(200, kCellMaximumTitleHeight) lineBreakMode:UILineBreakModeWordWrap];
私の drawRect で。storyTitleString は、任意の文字列に置き換えることができます。また、このライブラリを使用して、バックグラウンド スレッドで描画を実行します。