2

ユーザーが写真を撮るためにカメラを開いています。写真を撮って「使用」を押すと、メモリリークが発生し続けます:[self presentModalViewController:imagePickerアニメーション:YES]、

完全なコード:

imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;      
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.mediaTypes = [NSArray arrayWithObjects:
                              (NSString *) kUTTypeImage,
                              (NSString *) kUTTypeMovie, nil];
imagePicker.allowsEditing = NO;

[self presentModalViewController:imagePicker animated:YES]; //This leaks

両方didFinishPickingMediaWithInfoimagePickerControllerDidCancel私はこの行を置きます:

[imagePicker dismissModalViewControllerAnimated:YES];

私はこの質問が以前に尋ねられたことを知っていますが、私が得たリークでこれ以上私を助けるためにそれらのどれも見られませんでした。

4

4 に答える 4

1

ARC環境でない場合:

あなたの imagePicker = [[UIImagePickerController alloc] init]; リターンはカウント+1を保持します、

次に [self presentModalViewController:imagePicker animated:YES] 、コントローラーを保持するため、カウント+2を保持します。

[imagePicker dismissModalViewControllerAnimated:YES]; +1なので、コントローラーはまだメモリにぶら下がっています。

後にコントローラーを解放しますpresentModalViewController

于 2012-05-25T10:46:25.780 に答える
0

@propertyforを作成しimagePickerて割り当てるのはどうですか?

self.imagePicker = [[UIImagePickerController alloc] init];
于 2012-05-29T12:50:10.650 に答える
0

これはiOS自体のコードのバグであることが判明しました。

Apple Developer Webサイトのサンプルコードをダウンロードしたところ、同じリークが発生しました。ですから、これは私が自分で修正できるものではなく、すぐに修正されることを願っています。

于 2012-05-29T12:46:12.180 に答える
0

このコードを試してください

imagePicker = [[[UIImagePickerController alloc] init] autorelease];

そして、あなたが持っているものを確認してください

NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];

// your code

[pool release];
于 2012-05-25T10:50:13.840 に答える