2009-06-24 5 views
1

これはiPhoneのフォトライブラリから画像を選択する方法を、よく知られたスニペットですなぜ私にはわからない。ここでiPhoneコードリークと

- (IBAction)selectExistingPicture { 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { 

    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 

    [self presentModalViewController:picker animated:YES]; 
      [picker release]; 

    } 
} 

あなたが楽器のスクリーンショット(fullscreen)を見ることができます。

alt text http://img.skitch.com/20090624-rtqp2mgsnyynkgb97c9e8d2g9c.jpg

なぜそれが漏れていますか?私はそれを理解していない、ピッカーは適切にリリースされるので、私は思う。

答えて

6

UIImagePickerControllerは、known to leakである。複数回使用する場合は、1つのインスタンスを再利用することをお勧めします。

+2

よろしくお願いいたします。奇妙なことに、Appleはリークのためにアプリケーションを拒否しますが、リーク自体を生成します。 – Stefan

4

方法を終了するときにピッカーを表示していますが、ポインターを消しています。メモリが割り当てられているので、漏れです。試してみてください:

UIImagePickerController *picker = [[[UIImagePickerController alloc] init] autorelease]; 
+0

同じ問題が発生しました。申し訳ありませんが、私は忘れてしまった:[ピッカーリリース]私のポストで。それを編集しました。 – Stefan

2

UIImagePickerControllerでオートリリースをしてはいけませんか?

UIImagePickerController * picker = [[[UIImagePickerController alloc] init] autorelease];

+0

上記と同じ回答;-)私はこれを前に試しました:同じ問題。申し訳ありませんが、私は忘れてしまった:[ピッカーリリース]私のポストで。それを編集しました。 – Stefan