2009-12-23 53 views
1

我正在开发一个图像处理应用程序,将图像转换为位图。我正在操作位图中的位以获得所需的效果。 我第一次处理它提供了有关第二条的正确结果的图像尝试它给 EXC_BAD_ACCESSiPhone中的UInt8奇怪的问题(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

嗨,欢迎来到stackoverflow!下次在发布之前先看看你的帖子预览,看看它会是什么样子;) – 2009-12-23 12:34:14

+0

或者你可以等待某种灵魂来为你修复它:-) – paxdiablo 2009-12-23 12:35:28

+0

调试器失败了什么?逐行执行代码,直到失败。在我们能够充分帮助之前,我们需要知道这条线。 – TechZen 2009-12-23 13:37:24

回答

1

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

要了解如何解决此,请阅读本文件:DebuggingAutoReleasePool

即使你不认为你是“释放自动释放对象”,这将适用于您。

该方法工作得非常好。

总之,本文解释了如何使用Cocoa的NSZombie调试类和命令行“malloc_history”工具来准确找到在您的代码中访问了哪个发布对象。

在objc_exception_throw上设置断点很有用。这样调试器在你得到EXC_BAD_ACCESS时应该中断。

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