从NSoperation中的CoreGraphics API访问不良
-
08-10-2019 - |
题
我正在尝试使用MacRuby在NSoperation内部进行一些核心图/核心图操作。我有一些API调用,可以将源文件读取到CG中并设置CgimagedSestination。
如果我将以下代码放入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错误。并且只有将NSOPRIENT传递到NsoperationQueue时;如果我自己调用主要,它可以正常工作。
在主要的末尾,我正在运行:
CFRelease(@dest)
CFRelease(@cgOriginalImgSrc)
CGImageRelease(@cgOriginal)
即使不是从主线程调用init(因此不是主线程/背景线程问题,我猜),即使没有从init中起作用),即
有什么想法吗?
解决方案
看起来您的一个线程是指内存中不存在的对象。尝试删除
CFRelease(@dest)
CFRelease(@cgOriginalImgSrc)
CGImageRelease(@cgOriginal)
看看情况如何。另外,您可以尝试在每个队列中验证对象,以查看它们是否仍然可用。最后,您可以使用MacRubyd(Macruby的调试器)查看正在发生的事情,甚至使用GDB并粘贴回底带,以便我们可以看到问题出在哪里。
谢谢,
- 马特
不隶属于 StackOverflow