iPhone中UInt8的奇怪问题(EXC_BAD_ACCESS)

时间:2009-12-23 12:32:06

标签: iphone

我正在通过将图像转换为位图来开发图像处理应用程序。我正在操作位图中的位以获得所需的效果。 第一次处理图像时,它会在第二次尝试时给出正确的结果 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);

请帮助.........

1 个答案:

答案 0 :(得分:1)

EXEC_BAD_ACCESS的一个主要原因是尝试访问发布对象。

要了解如何解决此问题,请阅读以下文档:DebuggingAutoReleasePool

即使您认为自己并未“发布自动发布的对象”,这也适用于您。

这种方法非常有效。

总之,这解释了如何使用Cocoa的NSZombie调试类和命令行“malloc_history”工具来准确查找代码中已访问的已发布对象。

在objc_exception_throw上设置断点很有用。这样,当您获得EXC_BAD_ACCESS时,调试器就会中断。

可以在此处找到说明http://www.cocoadev.com/index.pl?DebuggingTechniques