所以我正在开发一个应用程序,如果我没有在应用程序默认值中存储用户名,我会从基本视图启动登录视图。
let defaults = NSUserDefaults.standardUserDefaults()
if !defaults.objectForKey("username") {
dispatch_async(dispatch_get_main_queue(), {
self.navigationController.tabBarController.performSegueWithIdentifier("Login", sender: self)
})
}
代码在我的故事板中触发了一个“现在模态”(iOS 8)segue,它提供了一个带有默认动画的表单。
它创建的视图具有使用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系统本身。
答案 0 :(得分:0)
_UILayoutGuide是对象的类,0x7fb3cc93bdb0是对象的旧RAM位置(现在是僵尸对象的位置。)“superview”是发送给僵尸的消息。
自从您在Beta-2发布之前发布,其中一个更新是否解决了您的问题?
答案 1 :(得分:-1)