Кажется, что 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
И при прокрутке демо App в вертикальной ориентации, вы будете получать журналы, как это:
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] является никогда не освобождается.
Любые идеи об этом? Спасибо!
ли вы когда-нибудь найти решение этой проблемы с ARC? –