From dab01916952da02c736c42f72b8a070ea0a7963d Mon Sep 17 00:00:00 2001 From: nixzhu Date: Thu, 4 Jun 2015 23:13:40 +0800 Subject: [PATCH] fix logout and relogin may crash for realm in profile --- .../Profile/ProfileViewController.swift | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/Yep/ViewControllers/Profile/ProfileViewController.swift b/Yep/ViewControllers/Profile/ProfileViewController.swift index c9dab2ed..5299057a 100644 --- a/Yep/ViewControllers/Profile/ProfileViewController.swift +++ b/Yep/ViewControllers/Profile/ProfileViewController.swift @@ -254,20 +254,18 @@ class ProfileViewController: UIViewController { var customNavigationItem: UINavigationItem = UINavigationItem(title: "Details") - func setBackButtonWithTitle() { - let backBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_back"), style: UIBarButtonItemStyle.Plain, target: self, action: "popBack") - backBarButtonItem.tintColor = UIColor.whiteColor() - - customNavigationItem.leftBarButtonItem = backBarButtonItem - } - - func popBack() { - self.navigationController?.popViewControllerAnimated(true) + + // MARK: Life cycle + + deinit { + NSNotificationCenter.defaultCenter().removeObserver(self) } override func viewDidLoad() { super.viewDidLoad() + NSNotificationCenter.defaultCenter().addObserver(self, selector: "cleanForLogout", name: EditProfileViewController.Notification.Logout, object: nil) + if profileUser == nil { if let myUserID = YepUserDefaults.userID.value, @@ -488,6 +486,21 @@ class ProfileViewController: UIViewController { // MARK: Actions + func setBackButtonWithTitle() { + let backBarButtonItem = UIBarButtonItem(image: UIImage(named: "icon_back"), style: UIBarButtonItemStyle.Plain, target: self, action: "popBack") + backBarButtonItem.tintColor = UIColor.whiteColor() + + customNavigationItem.leftBarButtonItem = backBarButtonItem + } + + func popBack() { + navigationController?.popViewControllerAnimated(true) + } + + func cleanForLogout() { + profileUser = nil + } + func updateProfileCollectionView() { profileCollectionView.collectionViewLayout.invalidateLayout() profileCollectionView.reloadData()