我在申请时遇到问题。它在模拟器中运行,但它在真实设备中启动时崩溃。 代码非常简单:
class loginScreen: UIViewController {
let userDefaults = NSUserDefaults.standardUserDefaults()
override func viewDidLoad() {
super.viewDidLoad()
userDefaults.setObject("127.0.0.1", forKey: "host")
userDefaults.synchronize()
}
我在iOS 7和iOS 8模拟器上测试了这个没有问题但是在真实设备上执行时它崩溃了
userDefaults.setObject("127.0.0.1", forKey: "host")
行,我不知道为什么。
在调试器控制台中,我没有消息(除了崩溃时setObject行中的“EXC_BAD_ACCESS”),在iPhone崩溃日志中我可以读到:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0xfffffffc
我无法理解为什么两个“系统”之间存在如此不同的行为..
当然我尝试了很多建议,如:
在setObject方法之前放置userDefaults.synchronize()
声明一个值为“127.0.0.1”的NSString变量,并在setObject方法中使用它
使用setValue而不是setObject
使用其他类型(userDefaults.setObject(666, forKey: "host")
)
但没有任何变化,它总是在尝试将值设置为userDefaults时崩溃...任何帮助或建议都将不胜感激!
PS:评论userDefaults.setObject("127.0.0.1", forKey: "host")
和userDefaults.synchronize()
应用开始没有问题
谢谢!
答案 0 :(得分:0)
似乎将项目清理干净并在设备上重新安装可以解决问题。谢谢大家的回复!