我设置了多个View Controller,每个视图中都有一个UIDatePicker。我开始使用Leaks工具进行测试,并且日期选择器没有泄漏。接下来我开始使用分配工具进行测试,这是我发现所有问题的地方。每个日期选择器都在viewDidLoad中初始化我设置了datepicker模式,如下所示:
datePicker.datePickerMode = UIDatePickerModeDate;
每次显示包含日期选择器的View Controller时,都会有多个“Malloc 392 KB”分配,最终导致应用程序崩溃。当深入挖掘分配工具时,它指出负责的调用者是[UISectionRowData:RefreshWithSection ....]。我不知道如何解决这个问题并解决它。任何帮助都会很棒。随附的是分配工具的一些截图。
答案 0 :(得分:1)
我认为该行
datePicker.datePickerMode = UIDatePickerModeDate;
可能会产生误导,可能是导致泄漏的下一行
date.inputView = datePicker;
我的猜测是date有一个合成的inputView变量,它保留了对象。鉴于你在这行做了alloc和init而没有自动释放......
datePicker = [[UIDatePicker alloc]init]
我希望这是泄漏,但很难说,因为你可能会稍后调用释放,但如果不是,这将是我的猜测。
答案 1 :(得分:1)
尝试通过编码制作UIDatePicker
。并在需要时初始化它,不要在viewDidLoad
或viewWillAppear
中初始化它,说你有一个按钮,当它被点击时你初始化UIDatePicker
。当用户完成选择日期后,将其从superview和datePicker=nil;
中删除。通过这种方式,只要UIDatePicker可见,你就可以节省内存。