MacRuby を使用して、NSOperation 内で CoreGraphics/CoreImage 操作を実行しようとしています。ソース ファイルを CG に読み込み、CGImageDestination を設定する API 呼び出しがいくつかあります。
次のコードを NSOperation.init に入れると、すべてうまくいきます。
@dest = CGImageDestinationCreateWithURL(@photo.output_url, "public.jpeg" , 1, nil);
@context = CIContext.alloc.init
@cgOriginalImgSrc = CGImageSourceCreateWithURL(@photo.url, nil)
@cgOriginal = CGImageSourceCreateImageAtIndex(@cgOriginalImgSrc, 0, nil)
しかし、同じコードを NSOperation のメイン関数に入れると、散発的に EXC_BAD_ACCESS エラーが発生します。また、NSOperation を NSOperationQueue に渡す場合のみ。main を自分で呼び出すと、問題なく動作します。
私が実行しているメインの最後に:
CFRelease(@dest)
CFRelease(@cgOriginalImgSrc)
CGImageRelease(@cgOriginal)
さらに奇妙なのは、initがメインスレッドから呼び出されなくても、initで動作することです(メインスレッド/バックグラウンドスレッドの問題ではないと思います)
何かご意見は?