我正在为WatchOS开发新的应用程序,而应用程序在模拟器上正常工作,它在实际设备上崩溃,没有任何错误日志。首先,我认为它可能是我的手表和提交的应用程序审查,它被拒绝,因为它在实际设备上崩溃。手表的代码非常简单,它只是发送HTTP请求而且全部都是。
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
let request = NSURL(string: "[MY SERVER URL]")
var response = try! String(contentsOfURL: request!)
if response == "X"{
response = ":D"
}
watch_text.setText(response)
super.willActivate()
}
答案 0 :(得分:0)
手头有两个问题:
阻止应用
您正在willActivate()
中进行同步网络请求,并阻止了用户界面。用户正在等待您的应用加载,但他们可能需要等待很长时间才能完成或失败网络请求。
除了这是一种消极体验之外,你还没有考虑操作系统如何它它认为它被挂起时
。您应该use NSURLSession
to load your URL,并在其完成处理程序中设置标签。
强制展开并忽略错误
您应该处理错误和零选项,而不是忽略错误和强制解包选项。
只要您看到!
,就会将其视为您的代码在发生意外情况时崩溃的机会。
我认为可能是我的手表
如果它对您的手表不起作用,则可能无法在另一块手表上使用。
如果某些东西不起作用(按您期望的方式),则更有可能是软件问题(使用您的代码),而不是手表的硬件问题。