presentModalViewController上的内存泄漏

时间:2012-05-25 10:37:07

标签: objective-c xcode memory-leaks instruments

我打开相机让用户拍照。 当我拍照并按下“使用”时,我不断收到内存泄漏:     [self presentModalViewController:imagePicker animated: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 个答案:

答案 0 :(得分:1)

如果它不是ARC env:

imagePicker = [[UIImagePickerController alloc] init]; 返回保留计数+1,

然后 [self presentModalViewController:imagePicker animated:YES] 保留你的控制器,所以保留计数+2,

<{1>} [imagePicker dismissModalViewControllerAnimated:YES]; 它是+1,所以你仍然把控制器挂在内存中。

presentModalViewController之后释放您的控制器。

答案 1 :(得分:0)

试试此代码

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

确保你拥有的东西

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

// your code

[pool release];

答案 2 :(得分:0)

原来这是iOS本身代码中的一个错误。

我下载了Apple开发者网站的示例代码,并且出现了相同的泄漏。 所以这对我自己无法解决,我希望很快能得到纠正。

答案 3 :(得分:0)

如何为@property创建imagePicker并分配:

self.imagePicker = [[UIImagePickerController alloc] init];