我正在通过将图像转换为位图来开发图像处理应用程序。我正在操作位图中的位以获得所需的效果。 第一次处理图像时,它会在第二次尝试时给出正确的结果 EXC_BAD_ACCESS
调试器显示:
dataref outofscope
我的代码是
CGImageRef img=previewImageView.image.CGImage;
NSLog(@" Image : %@ ", previewImageView);
CFDataRef dataref=CopyImagePixels(img);
CFDataRef dataref1=CopyImagePixels(img);
//UInt8 *data=(UInt8 *)CFDataGetBytePtr(dataref);
//UInt8 *original=(UInt8 *)CFDataGetBytePtr(dataref1);
UInt8 *data=nil;
data=(UInt8 *)CFDataGetBytePtr(dataref);
UInt8 *original=nil;
original=(UInt8 *)CFDataGetBytePtr(dataref1);
//original=data;
int length=CFDataGetLength(dataref);
请帮助.........
答案 0 :(得分:1)
EXEC_BAD_ACCESS的一个主要原因是尝试访问发布对象。
要了解如何解决此问题,请阅读以下文档:DebuggingAutoReleasePool
即使您认为自己并未“发布自动发布的对象”,这也适用于您。
这种方法非常有效。
总之,这解释了如何使用Cocoa的NSZombie调试类和命令行“malloc_history”工具来准确查找代码中已访问的已发布对象。
在objc_exception_throw上设置断点很有用。这样,当您获得EXC_BAD_ACCESS时,调试器就会中断。
可以在此处找到说明http://www.cocoadev.com/index.pl?DebuggingTechniques