私はあなたがボタンを押したときに、それはそれ上の画像に新しい画面を開くことをコードを書かれています。その新しい画面には、画面を閉じるボタンがあり、メイン画面に戻ります。iPhone/iPadのUIImage initWithContentsOfFile:
img = [UIImage imageNamed: @"Galaxy"];
ImageDisplay *display = [[ImageDisplay alloc] initWithImage:img];
しかし、私はこのような何かでこのコード行を交換する場合:
img = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Minnesota" ofType:@"png"]];
ImageDisplay *display = [[ImageDisplay alloc] initWithImage:img];
[img release];
それは私として働き、私はこの(無漏洩等...)のようにそれを行う場合は、それが正常に動作しますメモリリークがあります。私が画像スクリーンを開くたびに、アプリはますます多くのメモリを使います。しかし、すべてのデアロックが呼び出されます。[img retainCount]でも最終リリース前に1が表示されます。何が間違っているのかわからないので、ここにバグがある可能性はありますか?
編集:ここでは
がImageDisplayためのdeallocメソッドであり、このメソッドが呼び出される:クラスメソッドでないインスタンスメソッドである、あなたはこのようにそれを使用します。imageNamedがあるためという
-(void) dealloc {
[img release];
[super dealloc];
}
それはinitWithContentsOfFile' 'よりも良い/速いのですか? –
私はちょうどそれを試して、あなたの方法よりもはるかに少ないメモリを消費した。私のdeallocメソッドで –