同事在app启动的时候用nsuserdefault 获取数据会概率出现null的情况。
在登录注册的时候会造成莫名其妙的bug,上苹果官网,发现是iOS之后苹果的数据保护机制所致。
在应用刚启动的时候还未获取权限的时候,或者某些时候刚启动的时候[UIApplicationsharedApplication].protectedDataAvailable还未可用,就会出现null的情况。
苹果官网对此有评论说,要想避免这个问题,最好的方法是不用nSuserDefault,而是存在沙河目录中,并且设置NSFileProtectionType为none,敏感数据可以保存到keychain中。
苹果默认的NSFileProtectionType是NSFileProtectionCompleteUntilFirstUserAuthentication;
有开发者说是对[UIApplicationsharedApplication].protectedDataAvailable添加kvo直到为YES,然后再启动。
官网答疑网址是:
https://forums.developer.apple.com/thread/15685