注销后从内存中删除视图控制器?

时间:2016-07-24 06:21:25

标签: ios swift uiviewcontroller xcode7

我有一个水平滚动的单元格的集合视图。每次我退出时,我的主视图控制器都会被关闭到登录屏幕。但是当我重新登录时,似乎我的主视图控制器从未从内存中删除。我这样说是因为我的集合视图单元格与我退出之前的位置相同。

我尝试了一切,从viewWillAppear并重新加载数据,尝试将我的登录视图控制器作为我的根窗口。有什么建议吗?

(为了清楚地证明这一点,当您从Instagram注销时(从设置视图控制器),以模态方式显示登录视图。当您重新登录时,您将看到主页提要,而不是设置视图控制器。我想重置数据的层次结构)

class MainController: UICollectionViewController, UICollectionViewDelegateFlowLayout {

    let feedId = "feedId"

    var allUserCategory: AllUserCategory?

    override func viewDidLoad() {
        super.viewDidLoad()

        collectionView?.pagingEnabled = true
        collectionView?.backgroundColor = UIColor(r: 250, g: 250, b: 250)
        collectionView?.registerClass(AllUserCategory.self, forCellWithReuseIdentifier: feedId)

        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Log Out", style: .Plain, target: self, action: #selector(handleLogout))
        navigationItem.rightBarButtonItem?.tintColor = UIColor.blueColor()
        navigationController?.navigationBar.translucent = false

        checkIfUserLoggedIn()
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

        self.collectionView?.reloadData()
    }

    func handleLogout() {
        print("Logged out")
        do {
            try FIRAuth.auth()?.signOut()

        } catch let logoutError {
            print(logoutError)
        }

        allUserCategory?.users.removeAll()

        let loginController = LoginController()
        let loginNav = UINavigationController(rootViewController: loginController)
        presentViewController(loginNav, animated: true, completion: nil)
    }
}

2 个答案:

答案 0 :(得分:0)

在dealloc中添加NSLog

也许你的代码中有一些内存泄漏(MainViewController)。

答案 1 :(得分:0)

对IBOutlet和自定义委托使用弱引用