3

我设置了多个视图控制器,每个视图中都有一个 UIDatePicker。我开始使用泄漏工具进行测试,日期选择器没有泄漏。接下来我开始使用分配工具进行测试,这就是我发现所有问题的地方。每个日期选择器都在 viewDidLoad 中初始化,我将 datepicker 模式设置如下:

datePicker.datePickerMode = UIDatePickerModeDate;

每次显示包含日期选择器的视图控制器时,都会分配多个“Malloc 392 KB”,最终导致应用程序崩溃。当深入挖掘分配工具时,它指出负责的调用者是 [UISectionRowData:RefreshWithSection....]。我不知道如何解决这个问题并解决它。任何帮助都会很棒。附件是分配工具的一些屏幕截图。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

2 回答 2

1

我认为这条线

datePicker.datePickerMode = UIDatePickerModeDate;

可能具有误导性,它可能是导致泄漏的下一行

date.inputView = datePicker;

我的猜测是 date 有一个合成的 inputView 变量,它保留了对象。鉴于您正在执行 alloc 和 init 并且在此行上没有自动释放...

datePicker = [[UIDatePicker alloc]init]

我希望这是泄漏,但很难说,因为您稍后可能会调用 release 但如果不是,这将是我的猜测。

于 2013-01-07T16:33:53.043 回答
1

尝试UIDatePicker通过编码制作你的。并在需要时初始化它,不要初始化它viewDidLoadviewWillAppear说你有一个按钮,当它被点击时你初始化UIDatePicker

当用户完成选择日期时,将其从 superview 和datePicker=nil;. 这样,您可以节省内存,只要 UIDatePicker 可见,它就会被使用。

于 2013-09-14T10:59:43.287 回答