加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 不安全的可变地址崩溃

发布时间:2020-12-14 05:28:59 所属栏目:百科 来源:网络整理
导读:我有一个结构,有时,对于某些用户,在尝试访问该类型的变量时会出现崩溃. struct AppSettings { var mute:Bool { didSet { if mute != oldValue { let savedSettings = NSUserDefaults.standardUserDefaults() savedSettings.setBool(mute,forKey: KEY_SETTING
我有一个结构,有时,对于某些用户,在尝试访问该类型的变量时会出现崩溃.
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 ...")
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读