Ios UIPageViewController没有';翻页时不要释放内存

Ios UIPageViewController没有';翻页时不要释放内存,ios,objective-c,memory,memory-management,automatic-ref-counting,Ios,Objective C,Memory,Memory Management,Automatic Ref Counting,我正在做一个电子书项目,我也在使用ARC,然而,当我在模拟器中翻页时,我的记忆快速增长,当我完成翻页时,它接近200MB。似乎记忆没有被释放,但这不是ARC的目的吗?我将我的NSTimer和代理一起移除,看看这是否是罪魁祸首,但没有结果。似乎我在某个地方有一个循环,但我似乎找不到它。我也不使用积木。。。有什么想法吗 编辑:这是一个UIPageViewController应用程序 我替换了以下代码 - (DataViewController *)viewControllerAtIn

我正在做一个电子书项目,我也在使用ARC,然而,当我在模拟器中翻页时,我的记忆快速增长,当我完成翻页时,它接近200MB。似乎记忆没有被释放,但这不是ARC的目的吗?我将我的NSTimer和代理一起移除,看看这是否是罪魁祸首,但没有结果。似乎我在某个地方有一个循环,但我似乎找不到它。我也不使用积木。。。有什么想法吗

编辑:这是一个UIPageViewController应用程序

我替换了以下代码

        - (DataViewController *)viewControllerAtIndex:(NSUInteger)index storyboard:(UIStoryboard *)storyboard {
            // Return the data view controller for the given index.
            if (([self.pageData count] == 0) || (index >= [self.pageData count])) {
                return nil;
            }
            // Create a new view controller and pass suitable data.
            DataViewController *dataViewController = [storyboard instantiateViewControllerWithIdentifier:@"DataViewController"];
        with
        - (DataViewController *)viewControllerAtIndex:(NSUInteger)index storyboard:(UIStoryboard *)storyboard {
            // Return the data view controller for the given index.
            if (([self.pageData count] == 0) || (index >= [self.pageData count])) {
                return nil;
            }
            // Create a new view controller and pass suitable data.
            DataViewController *dataViewController = [storyboard instantiateViewControllerWithIdentifier:self.pageData[index]];

其中self.pageData[index]是情节提要中viewcontroller的id。我希望pageViewController在请求下一个viewController时释放此viewController

经过数小时的研究,UIPageViewController似乎有意保留对所有视图控制器的永久引用,并且从未释放它们(即使使用ARC)
解决方案是在我切换页面时手动调用[self-setView:nil]。

经过数小时的研究,UIPageViewController似乎有意保留对所有视图控制器的永久引用,并且从未释放它们(即使使用ARC)
解决方案是在切换页面时手动调用[self-setView:nil]。

使用“Instruments”实用程序查看分配。它可以显示存在什么对象以及它们是在哪里创建的。。。使用ARC,编译器将为您处理引用计数,并执行内存管理调用。。。但是,如果您(无意中)抓住了对象,它将无法摆脱它们;)我猜
UIPageViewController
中的页面很大,这就是内存的积累。就像Phillip说的,试着用仪器进行调查,或者,只是检查一下你的代码。你可能会发现错误。。。模板和我的应用程序之间的唯一区别是每个页面都有一个不同的viewController,而不是重复使用同一个view controller。。。我将代码添加到问题中,并使用“Instruments”实用程序查看分配。它可以显示存在什么对象以及它们是在哪里创建的。。。使用ARC,编译器将为您处理引用计数,并执行内存管理调用。。。但是,如果您(无意中)抓住了对象,它将无法摆脱它们;)我猜
UIPageViewController
中的页面很大,这就是内存的积累。就像Phillip说的,试着用仪器进行调查,或者,只是检查一下你的代码。你可能会发现错误。。。模板和我的应用程序之间的唯一区别是每个页面都有一个不同的viewController,而不是重复使用同一个view controller。。。我也在我的问题中添加了代码嗨,我面临着控制器保留页面的类似问题,这是一个问题。请详细说明“UIPageViewController有意保留永久引用”。这种行为是否有记录?我认为这是一个bug…我目前也遇到了同样的问题。您能否详细说明何时何地调用[self-setView:nil];?嗨,我面临着一个类似的问题,控制器保留页面,这是一个问题。请详细说明“UIPageViewController有意保留永久引用”。这种行为是否有记录?我认为这是一个bug…我目前也遇到了同样的问题。您能否详细说明何时何地调用[self-setView:nil];?