gpt4 book ai didi

ios - 如何正确释放UIPopoverController?

转载 作者:行者123 更新时间:2023-11-29 04:52:50 25 4
gpt4 key购买 nike

在下面的代码中,我分配了一个 UIPopoverController。显然我不会在这里释放它,因为我不确定应该在哪里正确地释放它而不发生崩溃。

我应该在哪里发布它?

- (IBAction)photoLibraryiPad {
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeSavedPhotosAlbum])
{
UIImagePickerController *imagePicker =
[[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType =
UIImagePickerControllerSourceTypePhotoLibrary;

self.popoverController = [[UIPopoverController alloc]
initWithContentViewController:imagePicker];
popoverController.delegate = self;
[self.popoverController presentPopoverFromRect:myButton.frame inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[imagePicker release];
}
}

谢谢!

最佳答案

您应该在 View Controller 中保留对它的引用,并在完成后释放它。

但在这种情况下,您既要设置属性又要创建一个已保留的对象。

此处,[[UIPopoverController alloc]initWithContentViewController:imagePicker]; 创建一个您必须释放的保留对象。

但是您将属性 popoverController 设置为该值,并且该属性的 setter 可能会保留该值。

您保留了弹出窗口两次并且从未释放它。

你应该:

UIPopover* popover = [[UIPopoverController alloc]
initWithContentViewController:imagePicker];
self.popoverController = popover;
[popover release];

完成弹出窗口后:

self.popoverController = nil;

您可能应该检查您的 memory management rules要明确这一点或使用ARC

关于ios - 如何正确释放UIPopoverController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8528942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com