UIPopoverController 内存泄漏中的 UIPickerView

Posted

技术标签:

【中文标题】UIPopoverController 内存泄漏中的 UIPickerView【英文标题】:UIPickerView inside a UIPopoverController memory leak 【发布时间】:2012-12-04 06:34:04 【问题描述】:

我对 ios 编程比较陌生,所以我会尽力描述我遇到的问题。如果我可以提供一些额外的信息来解决问题,请告诉我。

我目前在我的应用程序的 UIPopoverController 中显示 UIPickerView。我遇到的问题是,当我使用泄漏工具进行分析时,每次弹出窗口被解除时,都会弹出内存泄漏。这是初始化弹出框和选择器视图的代码。

// Show the popover
CGRect cellRect = [tableView rectForRowAtIndexPath:indexPath];

UIViewController *vc = [[UIViewController alloc] init];
[vc setContentSizeForViewInPopover:CGSizeMake(320, 216)];

UIPickerView *pv = [[UIPickerView alloc] init];
[pv setShowsSelectionIndicator:YES];
[pv setDataSource:self];
[pv setDelegate:self];

[[vc view] addSubview:pv];
inputPopoverController = [[UIPopoverController alloc] initWithContentViewController:vc];
[inputPopoverController setDelegate:self];
[pv selectRow:selection inComponent:0 animated:NO];
vc = nil;
pv = nil;

[inputPopoverController presentPopoverFromRect:cellRect inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

inputPopoverController 被声明为

UIPopoverController *inputPopoverController;

这里是我释放弹出框控制器的地方,我已经确认每次弹出框关闭时都会调用该函数。

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController 
inputPopoverController = nil;

仪器显示以下两个位置的泄漏

[pv selectRow:selection inComponent:0 animated:NO];

[inputPopoverController presentPopoverFromRect:cellRect inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

提前致谢。

【问题讨论】:

【参考方案1】:

经过几天的努力,我发现我需要实现一个 UIPickerView 委托方法。这是我找到答案的地方here

【讨论】:

以上是关于UIPopoverController 内存泄漏中的 UIPickerView的主要内容,如果未能解决你的问题,请参考以下文章

如何防止java中的内存泄漏

linux中内存泄漏的检测记录内存泄漏的代码

内存泄漏篇--1

什么是内存泄漏?

常见的内存泄漏原因及解决方法

Icarousel 内存泄漏中的泄漏