0

私はMacRubyを使用して、NSOperation内でCoreGraphics/CoreImageの操作をしようとしています。私は、ソースファイルをCGに読み込み、CGImageDestinationを設定するいくつかのAPI呼び出しを持っています。NSOperationのCoreGraphics APIのEXC BAD ACCESSから

私は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はメインスレッド(そうしないメインスレッド/バックグラウンドスレッドから呼び出されていない場合でも、初期化して動作することです問題、私は推測している)

どのような考えですか?

答えて

1

あなたのスレッドの1つが、もはやメモリに存在しないオブジェクトを参照しているように見えます。削除してみてください

CFRelease(@dest)  
CFRelease(@cgOriginalImgSrc) 
CGImageRelease(@cgOriginal) 

それがどうなるか見てください。また、各キュー内のオブジェクトを検証して、まだ使用可能かどうかを確認することもできます。最後に、MacRubyのデバッガであるmacrubydを使って何が起きているのかを確認したり、GDBを使用してバックトレースを貼り付けて問題の原因を突き止めることができます。

おかげで、

  • マット
関連する問題