0

在 ARC 中,我自定义UIPageviewControllerMyPageViewController. 我将MyPageViewController作为 childViewController 添加到RootViewcontroller. 过渡类型设置为卷曲。

ImageViewControllers像这样添加为 MyPageViewController 的 viewControllers:

ImageViewController *startingViewController1 = [self.storyboard instantiateViewControllerWithIdentifier:@"ImageViewController"];
ImageViewController *startingViewController2 = [self.storyboard instantiateViewControllerWithIdentifier:@"ImageViewController"];

NSArray *viewControllers = @[startingViewController1, startingViewController2];
[self.myPageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];

self.myPageViewController.delegate = self;
self.myPageViewController.dataSource = self.pageModelController;
[self addChildViewController: self.myPageViewController];
[self.view addSubview: self.myPageViewController.view];
[self.myPageViewController didMoveToParentViewController:self];

每个ImageViewController都有 4 个不同的 UIImageViews。由于这些图像可以是高清图像,为了避免缓存,我使用以下方法设置图像:

[UIImage imageWithContentsOfFile:]

但是每次我在 pageViewController 中翻页时,我都可以看到内存增加了 15 MB 并且它不会下降,除非我将整个 RootViewController 弹回。

但这仅在 iPad3 中发生,而在 iPad2 中内存并没有增加。两者都安装了 iOS 7.1。

对于 MyPageViewController,一次只添加 2 个 viewControllers( ImageViewController ),

- (UIViewController *)pageViewController:(PMPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController;
- (UIViewController *)pageViewController:(PMPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController;

在 viewDidUnload 中ImageViewController,我将每个视图和对象设置为nil;

所以我猜,iPad3 不会释放曾经添加到其中的视图控制器,而 iPad2 会释放以前的视图控制器并只保留当前的视图控制器。

这真的是一样的还是有任何其他解决方法...

有人可以帮我解决这个问题吗..我已经在这个问题上花了一个多星期了..任何建议都会更有帮助..

4

1 回答 1

1

对不起,伙计们,那又是我的错误。我们在主图像后面设置了另一个 PhotoFrame 图像。该 imageview 获得直接的 UIImage 数据。我应该改为引用图像路径。

我之前没有注意到这一点。当我将其更改为UIImage imageWithContentsOfFile:时,它就像一个魅力......

于 2014-06-06T09:32:24.503 回答