2012-07-26 8 views
0

OSX 코드를 iOS로 이식하고 CIImage의 바이트에 액세스해야합니다. OSX 버전은 NSBitmapImageRep을 사용하여이 작업을 수행하지만 iOS에서는 약간의 작업을 수행해야합니다. 여기 CIImage 바이트에 액세스하면 애플리케이션이 깨집니다.

내가 예상대로 작동

CIContext *context = [CIContext contextWithOptions:nil]; 
CGImageRef cgImage = [context createCGImage:image fromRect:image.extent]; 
CGDataProviderRef provider = CGImageGetDataProvider(cgImage); 
CFDataRef data = CGDataProviderCopyData(provider); 

CGRect extent = [image extent]; 
//png.Load((UInt8*)CFDataGetBytePtr(data), extent.size.width, extent.size.height, true); 

CFRelease(data); 
//CGDataProviderRelease(provider); 

을 실행하기 위해 노력하고있어 코드이지만, 잠시 후 응용 프로그램이 충돌합니다. 나는 이유를 모른다. 나는 메모리 누출/한계 메모리를 추측하고있다. 내가 아는 한 모든 것이 올바르게 해제되고있다 ... 내가 그 라인을 주석 처리하면 아무 것도 충돌하지 않는다. 만약 내가 CGDataProviderRelease 다시 거의 즉시 응용 프로그램에서 충돌 댓글.

답변

2

CFRelease (cgImage)가 필요하다고 생각하십니까? "생성"하여 만들지 않으셨습니까?

+0

나는 바보가된다. 그것은 문제였습니다. CFRelease (cgImage)를 사용하면 앱이 더 안정적으로 유지되지만 여전히 충돌이 발생합니다 (하지만 이제는 충돌이 두 번 걸립니다). 나는 거기에 다른 것이 있는지 없는지 모른다. –

+0

Instruments, Leaks 및 Object Alloc을 사용하여 프로젝트를 실행한다. 당신은 아마도 유출 정보의 한 종류를 발견 할 것이다. 그다지 사용하기가 어렵지 않습니다. –

+0

감사합니다. dave! 나는 지금 Instrument에서 무릎 깊숙이 있습니다. 나는 내가 여기에서 그것을 가져갈 수 있다고 생각한다. –

관련 문제