UIDatePicker leaks

2020-02-10 04:42发布

问题:

I appear to have a leaky UIDatePicker. I have noted memory leaks for setting the datePickerMode to show date and time. But, I'm only trying to display date. I'm fairly certain this is a framework leak because when I comment out several UIDatePicker property assignments, the leaks go away. This code leaks 1 CGColor object, and 1 UIDeviceRGBColor object:

datePicker = [[UIDatePicker alloc] initWithFrame:[self detailViewRect]];


datePicker.datePickerMode = UIDatePickerModeDate; //leaks CGColor when setting this
datePicker.hidden = NO;
datePicker.timeZone = [NSTimeZone systemTimeZone]; //leaks UIDeviceRGBColor
datePicker.maximumDate = [NSDate date];//leaks UIDeviceRGBColor
datePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth;

By commenting the lines Instruments reported as offending, I get no leaks:

datePicker = [[UIDatePicker alloc] initWithFrame:[self detailViewRect]];

//datePicker.datePickerMode = UIDatePickerModeDate; //leaks CGColor when setting this
datePicker.hidden = NO;
//datePicker.timeZone = [NSTimeZone systemTimeZone]; //leaks UIDeviceRGBColor
//datePicker.maximumDate = [NSDate date];//leaks UIDeviceRGBColor
datePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth;

Without at least date mode set, the UIDatePicker is worthless. Does anyone have a workaround?

回答1:

This approach worked for me:

Create the DatePicker in xib instead of the programmatic approach. Then, on the Attributes Inspector, set Mode to Date.