1

一定出事了這個代碼就在這裏:我在這裏有內存管理問題嗎?

+ (UIImage*)captureView:(UIView *)theView { 
    UIGraphicsBeginImageContext(theView.frame.size); 
    [theView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 

當我使用,Xcode中拋出我這個錯誤消息:

的malloc:*爲對象 0x103f000錯誤:指針被釋放沒有 分配 *設置malloc_error_break斷點調試

我在那裏看不到任何內存管理錯誤。還有其他人嗎?

+0

你是否像它告訴你一樣在'malloc_error_break'上設置了斷點?如果是這樣,那麼調用堆棧是什麼? – 2010-03-13 08:20:01

回答

1

我有同樣的警告。但是,它不會出現在3.1或更高版本中。

+0

中的一個框架錯誤,可能是一個框架錯誤。它只發生在我調用-removeFromSuperview時。當我擺脫它作爲我的普通視圖控制器放置過程的一部分,這也刪除了視圖,那麼一切都很好。 – dontWatchMyProfile 2010-03-11 14:36:59

0

看不到。在構建中啓用NSZombie以追蹤它。

它可能與從類方法返回一個自動發佈的UIImage有關,該方法可能在臨時自動釋放池內。這幅圖像可能會被該池的排水所摧毀。爲了測試,將該方法移至實例方法並查看問題是否消失。

+0

NSZombie在這裏沒有太多的幫助,因爲堆棧跟蹤中的代碼只是arm指令。在main()函數啓動之前,我的東西沒有任何東西可見。感謝與類方法的提示。它作爲實例方法,但它並沒有解決問題。 – dontWatchMyProfile 2010-03-11 13:48:21

+0

NSZombie在這裏沒有幫助,因爲這似乎發生在ObjC層(malloc錯誤)的下面。 – 2010-03-11 13:49:10

+0

我相信這是3.0 – dontWatchMyProfile 2010-03-11 14:05:46