Swift WKInterfaceLabel IBOutlet 在启动时冻结 Watchkit 应用程序
Swift WKInterfaceLabel IBOutlet Freezes Watchkit App at Startup
我正在尝试制作一个手表应用程序的简单示例:一个标签和一个按钮。按下按钮,标签的文本应该改变。
@IBOutlet var myLabel: WKInterfaceLabel!
@IBOutlet var myButton: WKInterfaceButton!
当我 运行 模拟器中的应用程序如屏幕截图所示时,以下代码会导致无尽的旋转轮:
@IBAction func sampleFunc() {
myLabel.setText("hello world")
myButton.setTitle("hermes")
}
记住。该应用程序永远不会加载。我永远看不到按钮或标签。它只是停留在这个旋转的白色圆点轮上。
但如果我采用完全相同的代码并简单地注释掉标签,手表应用程序会加载并且 运行 没问题。
@IBAction func sampleFunc() {
//myLabel.setText("hello world")
myButton.setTitle("hermes")
}
结果:
如果我单击该按钮,它会按预期更改为 "hermes":
到底为什么会这样?我已经在这里坐了整整四个小时,试图解决这个问题。标签作为 IBOutlet 连接。我已经清理了项目。我已经关闭 XCode,重新启动了我的整个计算机。我从头开始做了第二个项目。全部都一样。为什么我不能简单地不对这个标签进行注释?如果标签在按钮操作中未被注释,为什么应用程序永远不会加载?额外信息:即使我将未注释的标签放在其他地方,例如在 willActivate() 方法中,它的行为与应用程序从未加载的方式相同。
不错!经过几个小时的坚定努力,将问题发布到 Whosebug 上的过程帮助我注意到了答案。在几个示例中,我从眼角注意到了它,但从没想过它真的很重要。我说的是 "weak." 答案很简单,WKInterfaceLabel 标签必须很弱。而我一直这样声明 var:
@IBOutlet var myLabel: WKInterfaceLabel!
我实际上需要这样做(注意 'weak'):
@IBOutlet weak var myLabel: WKInterfaceLabel!
作为 Swift 示例,我碰巧看到它非常接近 this Apple Swift documentation page 的顶部。
当我尝试时,它成功了!
我正在尝试制作一个手表应用程序的简单示例:一个标签和一个按钮。按下按钮,标签的文本应该改变。
@IBOutlet var myLabel: WKInterfaceLabel!
@IBOutlet var myButton: WKInterfaceButton!
当我 运行 模拟器中的应用程序如屏幕截图所示时,以下代码会导致无尽的旋转轮:
@IBAction func sampleFunc() {
myLabel.setText("hello world")
myButton.setTitle("hermes")
}
记住。该应用程序永远不会加载。我永远看不到按钮或标签。它只是停留在这个旋转的白色圆点轮上。
但如果我采用完全相同的代码并简单地注释掉标签,手表应用程序会加载并且 运行 没问题。
@IBAction func sampleFunc() {
//myLabel.setText("hello world")
myButton.setTitle("hermes")
}
结果:
如果我单击该按钮,它会按预期更改为 "hermes":
到底为什么会这样?我已经在这里坐了整整四个小时,试图解决这个问题。标签作为 IBOutlet 连接。我已经清理了项目。我已经关闭 XCode,重新启动了我的整个计算机。我从头开始做了第二个项目。全部都一样。为什么我不能简单地不对这个标签进行注释?如果标签在按钮操作中未被注释,为什么应用程序永远不会加载?额外信息:即使我将未注释的标签放在其他地方,例如在 willActivate() 方法中,它的行为与应用程序从未加载的方式相同。
不错!经过几个小时的坚定努力,将问题发布到 Whosebug 上的过程帮助我注意到了答案。在几个示例中,我从眼角注意到了它,但从没想过它真的很重要。我说的是 "weak." 答案很简单,WKInterfaceLabel 标签必须很弱。而我一直这样声明 var:
@IBOutlet var myLabel: WKInterfaceLabel!
我实际上需要这样做(注意 'weak'):
@IBOutlet weak var myLabel: WKInterfaceLabel!
作为 Swift 示例,我碰巧看到它非常接近 this Apple Swift documentation page 的顶部。
当我尝试时,它成功了!