ドキュメントにCIFilter
は、クラスはスレッドセーフではなく、「各スレッドは独自のCIFilter
オブジェクトを作成する必要がある」と書かれています。私はそれをやっていますが、それでも非常に頻繁に悪いアクセスクラッシュが発生します。クラッシュするコード例:
- (CIImage *) outputCIImage {
CIFilter *monochromeFilter =
[CIFilter filterWithName:@"CIColorMonochrome" keysAndValues:
kCIInputImageKey, self.inputCIImage,
@"inputColor", [LSMonochromeFilter CIColorForFilterColor:self.color],
@"inputIntensity",[NSNumber numberWithFloat:1.0], nil];
return monochromeFilter.outputImage;
}
このコードは、最大 10 個のスレッドから並行して呼び出されています。CIFilter
スレッド間のインスタンスは互いに完全に分離されているように見えるため、原因がわかりません。何か案は?