Fuite de memory UIDatePicker dans IOS 8.3

Je vois des memory leaks dans UIDatePicker lorsqu'il est utilisé dans un survol sur un iPad exécutant IOS 8.3. Je reçois environ 5 Ko dans plusieurs memory leaks chaque fois que le sélecteur de date est surgi et ensuite rejeté. L'object divulgué est NSDateComponents et l'image responsable est [_UIDatePickerMode _yearlessYearForMonth:].

J'ai écrit une application de test simple pour démontrer le problème ( https://github.com/david-ape/datepickertest/ ). J'ai inclus à la fois une option UIPopoverController et une option UIPopoverPresentationController, mais cela ne semble pas avoir d'importance.

Est-ce que je fais quelque chose de mal, ou y at-il une solution de contournement, ou dois-je attendre une solution d'Apple? Si ce dernier, alors quelqu'un peut-il suggérer un contrôle de tiers que je pourrais utiliser à la place de UIDatePicker?

Ci-dessous le code que j'utilise pour faire apparaître les sélecteurs de date.

header de file

#import <UIKit/UIKit.h> @interface ViewController : UIViewController <UIPopoverControllerDelegate, UIPopoverPresentationControllerDelegate> @end 

Fichier d'implémentation

 #import "ViewController.h" @interface ViewController () @property (nonatomic, strong) UIPopoverController *ios7Popover; - (IBAction)datePickerPopupIOS7:(UIButton *)sender; - (IBAction)datePickerPopupIOS8:(UIButton *)sender; @end @implementation ViewController // helper - returns a view controller containing a date picker for use in a // popup + (UIViewController *)buildDatePickerViewController { CGRect frame = CGRectMake(0, 0, 350, 216); UIViewController *viewController = [[UIViewController alloc]init]; viewController.preferredContentSize = frame.size; UIDatePicker *datepicker = [[UIDatePicker alloc]initWithFrame:frame]; datepicker.datePickerMode = UIDatePickerModeDate; datepicker.hidden = NO; datepicker.date = [NSDate date]; [viewController.view addSubview:datepicker]; return viewController; } // popup date picker using UIPopoverController (IOS7 compatible) - (IBAction)datePickerPopupIOS7:(UIButton *)sender { UIViewController *viewController = [ViewController buildDatePickerViewController]; self.ios7Popover = [[UIPopoverController alloc]initWithContentViewController:viewController]; self.ios7Popover.delegate = self; [self.ios7Popover presentPopoverFromRect:sender.frame inView:self.view permittedArrowDirections:(UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown| UIPopoverArrowDirectionLeft|UIPopoverArrowDirectionRight) animated:YES]; } // popup date picker using UIPopoverPresentationController (IOS8 or later required) // Thanks to http://stackoverflow.com/a/26944036/1764243 for how to do this - (IBAction)datePickerPopupIOS8:(UIButton *)sender { if ([UIPopoverPresentationController class]) { UIViewController *viewController = [ViewController buildDatePickerViewController]; UINavigationController *destNav = [[UINavigationController alloc] initWithRootViewController:viewController]; destNav.modalPresentationStyle = UIModalPresentationPopover; UIPopoverPresentationController *popover = destNav.popoverPresentationController; popover.delegate = self; popover.sourceView = self.view; popover.sourceRect = [sender frame]; destNav.navigationBarHidden = YES; [self presentViewController:destNav animated:YES completion:nil]; } else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Not supported" message:@"UIPopoverPresentationController not supported in this version of IOS" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; } } #pragma mark - UIPopoverControllerDelegate methods - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController { self.ios7Popover = nil; } @end