當我使用CGBitmapContextCreate()
手動創建CGContextRef時,是否還必須手動釋放位圖數據?如何在創建CGContextRef時正確清理內存?
現在我正在這樣做:我有一個方法創建並返回一個CGContextRef。裏面那個方法,我也創建數據的這種情況下,像這樣:
bitmapData = malloc(bitmapByteCount);
context = CGBitmapContextCreate(bitmapData, ...);
return context;
直到現在我始終相信,一切都只是罰款時,該方法的調用者使用後,簡單地釋放CGContextRef:CGContextRelease(theContext);
從CGBitmapContextCreate
文檔:
在iOS系統4.0和更高版本,以及Mac OS X v10.6中 後來,如果 你想石英爲分配內存,你可以傳遞NULL位圖。這可以讓你從管理你自己的內存的 中解放出來,它可以減少內存泄漏問題。
這讓我覺得我必須用我的背景下這一個方便的方法,我在創建後釋放兩兩件事:釋放背景下的位圖數據,然後上下文本身。
所以,我必須這樣做:
void *data = CGBitmapContextGetData(context);
if (data != NULL) {
free(data);
}
所以我在這裏有一個大的內存泄漏,如果我不重構我的代碼也將發佈的位圖數據,而不是隻語境?