ios - UIPopover 发布 iOS

标签 ios uipopovercontroller

我有@property(nonatomic,retain) UIPopoverController * popoverController;

我在实现类中创建了弹出窗口。

我用这个:

- (void)createPopover:(NavigationController *)tempNavigation {

            UIPopoverController *tempPopover = [[UIPopoverController alloc] initWithContentViewController:tempNavigation];
            self.popoverController = tempPopover;
            [self.popoverController setPopoverContentSize:CGSizeMake(width, height)];
            tempPopover.delegate = self;                

            CGRect selectedRect = [self.tableView rectForRowAtIndexPath:indexPath];             
            [tempPopover presentPopoverFromRect:selectedRect inView:self.tableView permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
            [tempPopover release];
}

在这个方法中我需要释放我的弹出窗口

我用这个:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    if (popoverController) {
        [popoverController dismissPopoverAnimated:NO];
        self.popoverController=nil; 
        [popoverController release];
    }
    return YES;
}

我的问题:在此方法中释放弹出窗口的正确方法。或者我必须仅在 dealloc 方法中释放弹出窗口?

最佳答案

self.popoverController=nil;

调用 setter 。鉴于您的属性被声明为保留,这将释放以前的值并保留新的值(在这种情况下,它保留 nil,不执行任何操作)。

[popoverController release];

在 popoverController 上调用release,现在它是nil,什么也不做。但是你不应该这样做,如果它不是 nil,它就会被过度释放(因为下次设置 popoverController 属性时也会调用release)。

你设置属性的时候也有问题

UIPopoverController *tempPopover = [[UIPopoverController alloc] initWithContentViewController:tempNavigation];
self.popoverController = tempPopover;

setter 保留该值,因此您应该自动释放它

self.popoverController = [tempPopover autorelease];

你应该使用 ARC :)

关于ios - UIPopover 发布 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10227560/

相关文章:

ios - 为 iPhone 创建自定义弹出窗口 - 我要子类化哪个类?

ios - 以表单大小显示弹出 View

ios - 为什么需要为每个线程创建 ABAddressbookRef?

ios - 在 NSUserDefaults 中的 NSDictionary 中设置嵌套值

ios - iOS 视频应用程序的背景音频

ios - selectRowAtIndexPath 在 vi​​ewWillAppear 中失败

ios - 自定义 UIPopoverBackgroundView : no drop shadow

ios - 如何为 popoverPresentationController 手动设置 anchor

ios - 在 ARM 组件中使用堆栈指针(sp)

ios - 扩展 UITableViewCell UIElements 约束问题?