UIDatePicker UISectionRowData巨大的内存分配

时间:2013-01-07 16:24:54

标签: iphone ios xcode uidatepicker

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

datePicker.datePickerMode = UIDatePickerModeDate;

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

enter image description here enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

我认为该行

datePicker.datePickerMode = UIDatePickerModeDate;

可能会产生误导,可能是导致泄漏的下一行

date.inputView = datePicker;

我的猜测是date有一个合成的inputView变量,它保留了对象。鉴于你在这行做了alloc和init而没有自动释放......

datePicker = [[UIDatePicker alloc]init]

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

答案 1 :(得分:1)

尝试通过编码制作UIDatePicker。并在需要时初始化它,不要在viewDidLoadviewWillAppear中初始化它,说你有一个按钮,当它被点击时你初始化UIDatePicker。当用户完成选择日期后,将其从superview和datePicker=nil;中删除。通过这种方式,只要UIDatePicker可见,你就可以节省内存。