我有一个结构,有时,对于某些用户,在尝试访问该类型的变量时会出现崩溃.
struct AppSettings { var mute:Bool { didSet { if mute != oldValue { let savedSettings = NSUserDefaults.standardUserDefaults() savedSettings.setBool(mute,forKey: KEY_SETTING_MUTE) } } } init() { let savedSettings = NSUserDefaults.standardUserDefaults() if let savedMute = savedSettings.objectForKey(KEY_SETTING_MUTE) as? Bool { mute = savedMute } else { mute = false } } } var appSettings = AppSettings()
在应用程序启动期间的某个地方,它有时会崩溃
if appSettings.mute { // This will sometimes cause a crash } // in AppDelegate or the methods it calls
这仅适用于某些用户,我似乎无法重现它.不是重现它是最糟糕的,因为它让我没有任何工作.
搜索不安全的可变地址或错误没有帮助,因为几乎没有结果.
我更改了代码的某些部分并执行它.一切都很好,没有崩溃.
struct AppSettings { var mute:Bool { didSet { if mute != oldValue { let savedSettings = UserDefaults.standard savedSettings.set(mute,forKey: "MUTE") } } } init() { let savedSettings = UserDefaults.standard if let savedMute = savedSettings.object(forKey: "MUTE") as? Bool { mute = savedMute } else { mute = false } } } override func viewDidLoad() { super.viewDidLoad() var appSettings = AppSettings() if appSettings.mute { print("It is mute ...") } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。