因此,我正在開發一個應用程序,並且如果我沒有在應用程序默認值中存儲用戶名,則從基本視圖啓動登錄視圖。dismissViewControllerAnimated:completion:導致內存崩潰
let defaults = NSUserDefaults.standardUserDefaults()
if !defaults.objectForKey("username") {
dispatch_async(dispatch_get_main_queue(), {
self.navigationController.tabBarController.performSegueWithIdentifier("Login", sender: self)
})
}
代碼觸發一個「當前的模態」(的iOS 8)賽格瑞在我的故事板呈現與默認的動畫形式表。
它創建的視圖具有使用AutoLayout排列的各種子視圖。
現在,稍後在我的代碼中(在檢查登錄有效並更新默認值時),我忽略登錄視圖。
defaults.setObject(signInData["username"], forKey: "username")
defaults.setObject(signInData["password"], forKey: "password")
defaults.synchronize()
dispatch_async(dispatch_get_main_queue(), {
self.dismissViewControllerAnimated(true, completion: nil)
})
在這裏我得到了應用程序崩潰。具體來說,錯誤消息(當殭屍對象啓用時)是
-[_UILayoutGuide superview]: message sent to deallocated instance 0x7fb3cc93bdb0
其中UILayoutGuide顯然是AutoLayout相關的。
現在看來,我的觀點被解散後被釋放,但有一個指針,儘管如此,它仍然保留。我不知道如何解決它,因爲它不是在我寫的任何代碼中(我認爲),而是在AutoLayout系統本身。
您可以在崩潰時添加堆棧跟蹤嗎? –