2010-12-21 48 views
0

私はUIImageのインスタンスオブジェクトを作成したり、コードを作成する簡単なアプリケーションを開発しました。私はIpadの画面にスワップすると、それはsreenのイメージを作り、そのイメージをUIImageオブジェクトにレンダリングした後、このイメージをUIImageViewオブジェクトにセットし、UIimageオブジェクトが解放されます。 私は画面上をスワイプし、上記のプロセスは何度も繰り返されます。しかし、それはrenderImage = [[UIImage alloc] init];で私にリークを与える。どのように私はメモリリークの問題を解決する?

コード、

_renderImage = [[UIImage alloc] init]; 

_textImageV = [[UIImageView alloc] init]; 

[self renderIntoImage]; 

-(void)renderIntoImage 
{ 

    UIGraphicsBeginImageContext(bgTableView.bounds.size); 
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    _renderImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
} 

_textImageV.image = _renderImage; 
[_renderImage release]; 

iも_textImageVを解放スワイプするプロセスを完了した後。

UIImage * _renderImageでメモリリークの問題を解決する方法はありますか?この行で

答えて

4

_renderImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsGetImageFromCurrentImageContext()は、新しい自動解放UIImageを返し、それに_renderImage IVARを指します。前に割り当てられたUIImageは決して実際にはリリースされません。その変数は他のどこかに再通知されます。

この放棄されたUIImageはメモリリークを引き起こします。 _renderImageを他のものに指し示す前に解除するか、最初に割り当てることはできません。

+0

ありがとうございました。それは今うまく機能しました... – Tirth

+2

それを他のものに割り当てる前に、どうすればそれを解放できますか? –

+0

これはARCに適用されますか?もしそうなら、私たちはどのようにそれを解放するのですか? –

関連する問題