Es scheint, dass UIPageViewController hält den ursprünglichen Content-View-Controller für immer. Zum Beispiel:UIPageViewController Speicherleck
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;
Die startingViewController nie, bis die pageViewController selbst veröffentlicht sie veröffentlicht.
Um diesen Fehler zu reproduzieren, erstellen Sie einfach ein neues Projekt in XCode mit der Vorlage für seitenbasierte Anwendungen. Und fügen Sie 3 Zeilen Code in DataViewController.m
@property NSInteger debugIndex; // file scope
NSLog(@"DataViewController[%d] created", self.debugIndex); // in viewDidLoad
NSLog(@"DataViewController[%d] dealloc", self.debugIndex); // in dealloc
Und wenn Sie die Demo blättern App in vertikaler Ausrichtung, werden Sie Protokolle wie diese:
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] ist nie freigegeben.
Irgendwelche Ideen dazu? Danke!
Haben Sie jemals eine Lösung für diesen mit ARC finden? –