【发布时间】:2019-12-27 04:50:07
【问题描述】:
我有以下代码:
class EditorWindow: NSWindow {
@Binding var keycode : Int
override func keyDown(with event : NSEvent) {
super.keyDown(with: event)
Swift.print("Caught a key down: \(event.keyCode)!")
}
init(keycode : Int){
self.keycode = keycode
super.init(contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
}
}
将 self.keycode = keycode 放在 super.init 之前会给我错误“'self' used in property access 'keycode' before 'super.init' call”,(如this question,建议交换命令)。如果我交换订单,我会收到错误消息:“在 super.init 调用时未初始化属性'self.keycode'”(如this question 中建议使用原始订单作为解决方案) - 它似乎无论我使用哪种顺序都会出错 - 我该如何解决?
【问题讨论】:
-
keycode 是干什么用的?
-
先调用super.init,看看是否将keykode设置为weak (weak var keykode: Int) 修复它。
-
你为什么需要
@Binding?