我的应用程序中存在一个问题,即其内存不断增加。所以这是我的应用程序结构。我正在使用SWrevealViewController
进行幻灯片放映。
Slidemenu
- View Controller A
- View Controller B
- View Controller C
我的视图控制器A由UICollectionView
和ScrollView
组成。
当我从视图控制器A执行segue到View Controller B时,内存运行正常。但是,如果我要使用幻灯片菜单查看控制器A,内存会增加。
这是我在SWRevealViewController的表委托上的didSelectRowAtIndexPath
。我正在使用performSegueWithIdentifier
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if isLoggedIn {
self.performSegueWithIdentifier(idSegueLoggedIn[indexPath.row], sender: self)
}
}
然后我将通过幻灯片菜单查看控制器B,然后再次转到View Controller A,此时内存不断增加。
看起来我的视图控制器A由UICollectionView
组成,并不会在内存中释放它的对象。但是,如果我删除UICollectionView
,我的记忆问题就会消失,并且运行良好。
所以我认为这是我对UICollectionView
的引用。我已经声明了weak
属性,但它没有做任何事情。
@IBOutlet weak var othersCollectionView: UICollectionView!
我尝试在我的View Controlle A中调用deinit(),但它没有被调用。
这是我的内存使用情况图,在每个"黑色箭头"上,我使用幻灯片菜单移动到View Controller A.
答案 0 :(得分:0)
我回答的有点晚了,但我遇到了类似的问题。最后,我的问题与某些UITableViewCell中的委托声明相关联。我通过将委托变量声明为弱来修复问题。
以下是一个例子:
class MyTableViewCell:UITableViewCell {
@IBOutlet weak var myNameTextField: UITextField!
weak var delegate: CellDbErrorDelegate?