Objective C,iOS - 收到内存警告

时间:2011-10-10 10:23:14

标签: xcode memory-leaks

我目前正在开发一个iOS项目,它取得了很好的进展,但整个内存的事情 在iOS上无法正常工作。

iphone相机记录了一个流。我有一个通过队列执行的捕获方法。 相机图像转换为灰度。它运作良好,但过了一段时间给了一些 内存警告并关闭应用程序,因为它内存不足。

我发现了错误来源

CGColorSpaceRef colorSpaceGray = CGColorSpaceCreateDeviceGray();
CGContextRef newContextGray = CGBitmapContextCreate(baseAddressGray, width, height, 8, width, colorSpaceGray, kCGImageAlphaNone);

CGImageRef GrayImage = CGBitmapContextCreateImage(newContextGray);


UIImage *img= [UIImage imageWithCGImage:GrayImage scale:1.0 orientation:UIImageOrientationRight];
[self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:img waitUntilDone:NO];



free(baseAddressGray);
CGColorSpaceRelease(colorSpaceGray);
CGContextRelease(newContextGray);


CVPixelBufferUnlockBaseAddress(imageBuffer,0);

所有内容都位于自动释放池中,之后会被耗尽。 作为崩溃源的那条线是

CGContextRef newContextGray = CGBitmapContextCreate(baseAddressGray, width, height, 8, width, colorSpaceGray, kCGImageAlphaNone);

根据我的理解,这里应该没有记忆问题,因为

CGColorSpaceRelease(colorSpaceGray);
CGContextRelease(newContextGray);

被释放。

我在这里做错了什么,或者缺少什么?

1 个答案:

答案 0 :(得分:1)

您没有在代码示例的第4行发布GrayImage