From 5b06a8a40c815c2c1d64e5d55614c8a6d3a09bde Mon Sep 17 00:00:00 2001 From: nixzhu Date: Wed, 2 Sep 2015 12:35:53 +0800 Subject: [PATCH] removeAllListeners when cleanAllUserDefaults --- Yep/Helpers/YepUserDefaults.swift | 16 +++++++++++++++- .../EditProfile/EditProfileViewController.swift | 2 ++ .../Profile/ProfileViewController.swift | 4 ++++ .../Settings/SettingsViewController.swift | 2 ++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Yep/Helpers/YepUserDefaults.swift b/Yep/Helpers/YepUserDefaults.swift index 93e03a86..e775557a 100644 --- a/Yep/Helpers/YepUserDefaults.swift +++ b/Yep/Helpers/YepUserDefaults.swift @@ -68,10 +68,15 @@ class Listenable { for listener in listenerSet { if listener.name == name { listenerSet.remove(listener) + break } } } + func removeAllListeners() { + listenerSet.removeAll(keepCapacity: false) + } + init(_ v: T, setterAction action: SetterAction) { value = v setterAction = action @@ -95,6 +100,16 @@ class YepUserDefaults { class func cleanAllUserDefaults() { + v1AccessToken.removeAllListeners() + userID.removeAllListeners() + nickname.removeAllListeners() + introduction.removeAllListeners() + avatarURLString.removeAllListeners() + badge.removeAllListeners() + pusherID.removeAllListeners() + areaCode.removeAllListeners() + mobile.removeAllListeners() + defaults.removeObjectForKey(v1AccessTokenKey) defaults.removeObjectForKey(userIDKey) defaults.removeObjectForKey(nicknameKey) @@ -102,7 +117,6 @@ class YepUserDefaults { defaults.removeObjectForKey(avatarURLStringKey) defaults.removeObjectForKey(badgeKey) defaults.removeObjectForKey(pusherIDKey) - defaults.removeObjectForKey(areaCodeKey) defaults.removeObjectForKey(mobileKey) } diff --git a/Yep/ViewControllers/EditProfile/EditProfileViewController.swift b/Yep/ViewControllers/EditProfile/EditProfileViewController.swift index 00b796e3..6b938c82 100644 --- a/Yep/ViewControllers/EditProfile/EditProfileViewController.swift +++ b/Yep/ViewControllers/EditProfile/EditProfileViewController.swift @@ -53,6 +53,8 @@ class EditProfileViewController: UIViewController { YepUserDefaults.nickname.removeListenerWithName(Listener.Nickname) YepUserDefaults.introduction.removeListenerWithName(Listener.Introduction) YepUserDefaults.badge.removeListenerWithName(Listener.Badge) + + println("deinit EditProfileViewController") } override func viewDidLoad() { diff --git a/Yep/ViewControllers/Profile/ProfileViewController.swift b/Yep/ViewControllers/Profile/ProfileViewController.swift index 02a00800..f0bff161 100644 --- a/Yep/ViewControllers/Profile/ProfileViewController.swift +++ b/Yep/ViewControllers/Profile/ProfileViewController.swift @@ -290,6 +290,8 @@ class ProfileViewController: UIViewController { YepUserDefaults.nickname.removeListenerWithName(Listener.Nickname) YepUserDefaults.introduction.removeListenerWithName(Listener.Introduction) + + println("deinit ProfileViewController") } override func preferredStatusBarStyle() -> UIStatusBarStyle { @@ -305,6 +307,8 @@ class ProfileViewController: UIViewController { title = NSLocalizedString("Profile", comment: "") + println("init ProfileViewController \(self)") + NSNotificationCenter.defaultCenter().addObserver(self, selector: "cleanForLogout", name: EditProfileViewController.Notification.Logout, object: nil) if profileUser == nil { diff --git a/Yep/ViewControllers/Settings/SettingsViewController.swift b/Yep/ViewControllers/Settings/SettingsViewController.swift index ad0f8f31..cd42a275 100644 --- a/Yep/ViewControllers/Settings/SettingsViewController.swift +++ b/Yep/ViewControllers/Settings/SettingsViewController.swift @@ -44,6 +44,8 @@ class SettingsViewController: BaseViewController { deinit { YepUserDefaults.introduction.removeListenerWithName(Listener.Introduction) + + println("deinit SettingsViewController") } override func viewDidLoad() {