2009-12-23 3 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

안녕 찾을 수 있습니다! 다음 번에 게시 미리보기를보고 나서 어떻게 보이는지 볼 수 있습니다.) –

+0

또는 어떤 종류의 영혼이 당신을 위해 고칠 때까지 기다릴 수 있습니다 :-) – paxdiablo

+0

디버거가 실패한 행은 무엇입니까? 실패 할 때까지 한 줄씩 코드를 단계별로 실행하십시오. 우리가 완전히 도울 수 있기 전에 우리는 그 선을 알아야합니다. – TechZen

답변

1

EXEC_BAD_ACCESS의 주요 원인은 릴리스 개체에 액세스하려고 시도한 것입니다. 당신은 당신이 "자동 해제 객체를 해제"생각하지 않더라도 DebuggingAutoReleasePool

,이 사항이 적용됩니다

이 문제를 해결하는 방법이 문서를 읽을 찾으려면.

이 방법은 매우 잘 작동합니다.

요약하면 Cocoa의 NSZombie 디버깅 클래스와 명령 줄 "malloc_history"도구를 사용하여 코드에서 릴리스 된 개체가 무엇인지 정확하게 확인하는 방법을 설명합니다.

objc_exception_throw에 중단 점을 설정하는 것이 유용합니다. 그렇게하면 EXC_BAD_ACCESS를 얻을 때 디버거가 중단됩니다.

지침, 유래에 오신 것을 환영합니다 여기 http://www.cocoadev.com/index.pl?DebuggingTechniques