我打开相机让用户拍照。 当我拍照并按下“使用”时,我不断收到内存泄漏: [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
在didFinishPickingMediaWithInfo
和imagePickerControllerDidCancel
中我都写了这一行:
[imagePicker dismissModalViewControllerAnimated:YES];
我知道之前已经问过这个问题,但他们没有一个人能够帮助我进一步解决我的问题。
答案 0 :(得分:1)
如果它不是ARC env:
您
imagePicker = [[UIImagePickerController alloc] init];
返回保留计数+1,
然后
[self presentModalViewController:imagePicker animated:YES]
保留你的控制器,所以保留计数+2,
[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];