我有一個方法可以分析從CGImageRef構建的NSBitmapImageRep中的像素數據。下面是相關代碼:巨大的內存泄漏NSBitmapImageRep
CGImageRef ref;
// omitted code for initializing ref
NSBitmapImageRep *bitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:ref];
uint32* bitmapPixels = (uint32*) [bitmapRep bitmapData];
// do stuff with bitmapPixels
[bitmapRep release];
CGImageRelease(ref);
我知道我在正確釋放CGImageRef和NSBitmapImageRep,但調用-bitmapData泄漏約2 MB每個這就是所謂的時間,我不知道如何正確地釋放它。有任何想法嗎?
更新:我忘了補充一點:內存只有在全屏應用程序運行時纔會泄漏。對於經常使用,內存釋放就好了。
快速查看引用表明-bitMapData只是返回一個指向bitmapRep對象內的數據的指針,因此應該不需要釋放它。 你可以打開垃圾收集,看看會發生什麼嗎?它可能會給你一些線索。 – 2009-12-14 09:12:59
@託尼·肯的解決方案似乎在你完成數據後發佈數據。沒有游泳池,看起來Mac只是在任何時候發佈數據。 – pop850 2011-05-07 21:41:09