Утечка памяти в UIPageViewController

Кажется, что UIPageViewController держит начальный контроллер представления контента навсегда. Например:

DataViewController *startingViewController = [self.modelController viewControllerAtIndex:0 storyboard:self.storyboard];
NSArray *viewControllers = @[startingViewController];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];
self.pageViewController.dataSource = self.modelController;

startingViewController никогда не выпускается, пока не будет выпущен сам pageViewController.

Чтобы воспроизвести эту ошибку, просто создайте новый проект в XCode, используя шаблон приложения на основе страницы. И добавьте 3 строки кода в DataViewController.m

@property NSInteger debugIndex; // file scope
NSLog(@"DataViewController[%d] created", self.debugIndex); // in viewDidLoad
NSLog(@"DataViewController[%d] dealloc", self.debugIndex); // in dealloc

И когда вы прокручиваете демонстрационное приложение в вертикальной ориентации, выЯ получу логи, как это:

DataViewController[0] created  
DataViewController[1] created  
DataViewController[2] created  
DataViewController[1] dealloc  
DataViewController[3] created  
DataViewController[2] dealloc  
DataViewController[4] created  
DataViewController[3] dealloc  
DataViewController[5] created  
DataViewController[4] dealloc  
DataViewController[6] created  
DataViewController[5] dealloc  

DataViewController [0] никогда не освобождается

Есть идеи по этому поводу? Спасибо!

Ответы на вопрос(5)

Ваш ответ на вопрос