我正在尝试使用 MacRuby 在 NSOperation 中进行一些 CoreGraphics/CoreImage 操作。我有一些 API 调用将源文件读入 CG 并设置 CGImageDestination。
如果我将以下代码放入 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 不是从主线程调用的(所以不是主线程/后台线程问题,我猜)
有什么想法吗?