我從一個非常簡單的函數中獲得了內存泄漏問題。這裏是我的代碼:UIImage setImage:導致內存泄漏
-(void) drawPuzzle
{
gameView.image=nil;
UIGraphicsBeginImageContext(gameView.frame.size);
[gameView.image drawInRect:CGRectMake(0,
0,
gameView.frame.size.width,
gameView.frame.size.height)];
CGContextRef con=UIGraphicsGetCurrentContext();
CGContextMoveToPoint(con, 20,0);
CGContextAddLineToPoint(con,20, gameView.frame.size.height);
CGContextStrokePath(con);
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[gameView setImage:newImage];
}
文書報告如下:
Event Type RefCt Responsible Caller
Malloc 1 +[UIImage imageWithCGImage: scale: orientation:]
Autorelease +[UIImage imageWithCGImage: scale: orientation:]
Retain 2 -[UIImageView setImage:]
Release 1 -[NSAutoreleasePool drain]
你釋放gameView.image釋放
newImage
? (假設它由setImage保留) – giorashc 2012-04-02 13:03:40如何? [gameView.image release]或gameView.image = nil?我不知道爲什麼我需要[gameView.image發佈],但我在[gameView發佈]之前做過gameView.image = nil。 – Lynn 2012-04-02 13:19:49
[gameView.image release]; – Lynn 2012-04-02 13:22:06