0
我想出了一個錯誤「* - [UIImage release]:發送到釋放實例的消息」。這是我正在做的。UIImage釋放錯誤 - *** - [UIImage發佈]:發送到釋放實例的消息
void imageFromPicture(AVPicture *pict, int width, int height)
{
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
CFDataRef data = CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, pict->data[0], pict->linesize[0]*height,kCFAllocatorNull);
CGDataProviderRef provider = CGDataProviderCreateWithCFData(data);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGImageRef cgImage = CGImageCreate(width,
height,
8,
24,
pict->linesize[0],
colorSpace,
bitmapInfo,
provider,
NULL,
NO,
kCGRenderingIntentDefault);
CGColorSpaceRelease(colorSpace);
UIImage *image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
CGDataProviderRelease(provider);
CFRelease(data);
[ref_to_self display: image];
[image release];
}
- (void) display:(UIImage*)image
{
self.ImageView.image = image;
}
現在,函數imageFromPicture在無限循環中被連續調用,直到出現一些中斷條件。這用於顯示連續的圖像序列。此代碼正常工作,但是在顯示所有圖像並且控件返回到操作系統後,出現此錯誤。
有人可以告訴我我在做什麼錯。我不太瞭解客觀的C內存管理。
好吧,如果我照你說的那樣在iOS模擬器上正常工作,但是當我將應用程序放在設備上時,應用程序在中間崩潰,說內存級警告= 1。這就是爲什麼我添加了行[image release]在我的代碼中。 – Rohan
你是否在循環中多次這樣做?使用'NSAutoreleasePool'來緩解一些內存壓力。 – jtbandes
好吧,我會嘗試,同時你可以請我指向一些示例代碼片段或文件,我可以參考使用NSAutoreleasePool,我不太瞭解客觀C.謝謝.. – Rohan