因此xcode工具告诉我,我在下面的代码中有泄漏
imageRef = [[_originalGridView image] CGImage];
_width = CGImageGetWidth(imageRef);
_height = CGImageGetHeight(imageRef);
//leak?
pixelData = (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(imageRef));
rawData = (unsigned char*) [pixelData bytes];
问题是如果我尝试释放pixelData会崩溃,我在这里有点不知所措。有没有另一种方法可以做我目前正在做的事情,或者我应该释放我不是的东西。
编辑:对于那些说我应该发布像素数据的人来说,当我尝试
时会发生这种情况malloc: *对象0x547b000的错误:未分配被释放的指针 * 在malloc_error_break中设置断点以进行调试
答案 0 :(得分:0)
我认为您需要首先保留rawData
,然后才能使用CFRelease(pixelData)
释放pixelData
不要忘记在使用后发布rawData
。
答案 1 :(得分:0)
在投射之前创建CGDataRef数据的副本,然后转换为NSData, 在完成您拥有它的CGDataRef副本之后,然后发布像这样的副本。
CFDataRef theData;
theData = CGDataProviderCopyData(CGImageGetDataProvider(imageRef));
// caste
NSData *data = (__bridge NSData *)theData;
//.. do some stuff
//Releaase data
CFRelease(theData);