我已经实现了一个全屏幕页面视图控制器,可以根据需要创建视图控制器,并且它们会被清理,以便一次只有3个内存(当前,上一个,下一个)。它就像Apple的基于页面的应用程序模板一样。但是,除了为所有页面存在的UIImageView
设置图像之外,我还以编程方式向每个我实例化的视图控制器添加了图像和标签以及按钮。我刚注意到,当我浏览视图控制器时,内存未被清除,因此当您到达最后一个视图控制器时,内存使用量最多为200 MB。如果我注释掉为每个控制器创建UI的代码,那么他们只是一个带背景的简单视图控制器,当你在页面之间滑动时,内存使用量不会增加。
如何在用户滑动时清理视图控制器的内容,以确保一次最多只有3个内存?或者我做错了什么来阻止这种清理如果应该自动完成呢?
这是我为每个索引创建视图控制器的方法:
func viewControllerAtIndex(index: NSInteger) -> DataViewController {
let dataVC = DataViewController(nibName: "DataViewController", bundle: nil)
dataVC.index = index
return dataVC
}
然后在DataViewController
viewDidLoad
I中,根据其view
属性,根据需要向其index
添加各种元素。例如:
if self.index == 1 {
self.imageView.image = UIImage(named: "image1") //all pages have an image view, it's set up in DataViewController's XIB
//programmatically create an image view, set its image, add auto layout constraints
//add some buttons and labels and set up auto layout constraints
} else if self.index == 2 {
self.imageView.image = UIImage(named: "image2")
//add images, buttons, labels etc
} ...