首页 文章

UIDatePicker UISectionRowData巨大的内存分配

提问于
浏览
3

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

datePicker.datePickerMode = UIDatePickerModeDate;

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

enter image description here

enter image description here

enter image description here

2 回答

  • 1

    我觉得行

    datePicker.datePickerMode = UIDatePickerModeDate;
    

    可能会产生误导,这可能是造成泄漏的下一行

    date.inputView = datePicker;
    

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

    datePicker = [[UIDatePicker alloc]init]
    

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

  • 1

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

相关问题