2012-08-31 168 views
0

我遇到了CGContextRef過度發佈的問題,但我無法弄清楚在哪裏。該文件說,一個CGContextRef與CGBitmapContextCreate創建應該還沒有被釋放,當我做我的錯誤「* - [不是一個類型的類]:消息發送到釋放實例0x613d750」過度釋放CGContextRef?

這裏是我的代碼:

CGContextRef ctx = CGBitmapContextCreate(NULL, self.size.width, self.size.height, 
             CGImageGetBitsPerComponent(self.CGImage), 0, 
             CGImageGetColorSpace(self.CGImage), 
             CGImageGetBitmapInfo(self.CGImage)); 


CGContextRelease(ctx); // PROBLEM HERE 

正如您所看到的,除了旋轉圖像和創建UIImage之外,沒有太多的事情發生。任何想法爲什麼發生這種情況?

編輯:

我已經減少了代碼示例下降到2線,我仍然得到同樣的錯誤。

回答

0

檢查它是否與發佈的CGImageRelease一起發佈。我不記得我曾經遇到過的確切問題,但這是UIImage發佈上下文時遇到的問題。嘗試註釋掉CGImageRelease(cgimg);並看看CGContextRelease(ctx);在那之後工作。

+0

我試着評論CGImageRelease,但我仍然在CGContextRelease上得到同樣的錯誤。 – JWood

+0

僅用於測試目的嘗試註釋掉CGImageRef cgimg = CGBitmapContextCreateImage(ctx);和UIImage * img = [UIImage imageWithCGImage:cgimg];線也是如此。我沒有在這裏的iOS項目,所以我不能尋找更多的細節。這可能是UIImage的autorelease第二次釋放上下文。 – Victor

+0

這很有趣,錯誤仍然發生在那些註釋掉的行中。事實上,爲了減少創建後立即發佈ctx的可能性,我仍然看到錯誤。我會更新這個問題。 – JWood