在presentModalViewController内存泄漏(Memory leak on pre

2019-09-17 12:44发布

我打开摄像头,为用户拍摄照片。 我不断收到内存泄漏,当我拍了照片并挤压的“使用”:自我presentModalViewController:imagePicker动画:是]

全码:

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];

我不知道这个问题以前有人问,但他们没有看到帮我任何进一步与我有泄漏。

Answer 1:

如果它不是一个ARC ENV:

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

那么[self presentModalViewController:imagePicker animated:YES]保留您的控制器,所以保留计数+2,

[imagePicker dismissModalViewControllerAnimated:YES]; 它是+1,所以你仍然有你的控制器挂在内存中。

发布后您的控制器presentModalViewController



Answer 2:

试试这个代码

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

并获得肯定你有什么

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

// your code

[pool release];


Answer 3:

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

我下载了苹果开发者网站的示例代码和相同的泄漏止跌回升。 因此,这将是什么,我可以修复自己,我希望这很快得到纠正。



Answer 4:

如何创建@propertyimagePicker和分配:

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


文章来源: Memory leak on presentModalViewController