ios - UIPopovercontroller dealloc 在 popover 仍然可见时达到

标签 ios memory-management uipopovercontroller automatic-ref-counting

我向您保证,我确实在 SO 中为我的问题寻找答案,但没有一个有帮助。这里我得到了一个简单的代码,它应该在 UIPopoverController 中呈现一个 UIImagePickerController:

-(void)takePicture:(id)sender{
UIImagePickerController *picker=[[UIImagePickerController alloc] init];
picker.delegate=self;
picker.sourceType=UIImagePickerControllerSourceTypeCamera;
picker.allowsEditing=YES;
UIPopoverController *poc=[[UIPopoverController alloc] 
                            initWithContentViewController:picker];
[poc presentPopoverFromBarButtonItem:bbItem 
            permittedArrowDirections:UIPopoverArrowDirectionAny
                            animated:NO];
}

现在,即使是我第一次得到 [UIPopoveController dealloc] reached while... 错误和程序崩溃。我没有按照 ARC 进行任何保留、释放或自动释放。从 ARC 中受益时,UIPopoverControllers 是否有任何特殊考虑?

最佳答案

UIPopoverControllers 应该始终保存在一个实例变量中。为它创建一个强大的属性是一个很好的做法。

更新:

从 iOS 8 开始,您应该使用 UIPopoverPresentationController。然后您不需要保留对弹出窗口的引用,因为它由表示 Controller 管理。

代码示例(适用于 iPhone 和 iPad):

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.allowsEditing = YES;
picker.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController* popoverPC = picker.popoverPresentationController;
popoverPC.barButtonItem = bbItem;
popoverPC.permittedArrowDirections = UIPopoverArrowDirectionAny;
[self presentViewController:picker animated:YES completion:nil];

关于ios - UIPopovercontroller dealloc 在 popover 仍然可见时达到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8895071/

相关文章:

memory-management - SystemCache 和 MemoryInUse - 谁能解释这种行为?

c - OS X 上的 malloc 问题

delphi - 将 COM-DLL 从 Delphi 2007 移植到 Delphi 2009 后,如何诊断 COM-DLL 中发生的内存损坏错误?

ios - 从 Popover 关闭或弹出到 Root View Controller

ios - UITableView 在添加从网络返回的新单元格时滚动不连贯

ios - MACRO 函数不返回 Objective-C 对象

ios - Storyboard中多个 View Controller 使用的公共(public) View

iOS 使 UIImage 的一部分透明

ios - PopOver ViewController 屏幕尺寸不一致

iphone - UIPopoverController 前面的 UIImageView