从一个空白的 OS X 应用程序项目开始,我将以下代码添加到applicationDidFinishLaunching
.
func applicationDidFinishLaunching(aNotification: NSNotification) {
let app = NSApplication.sharedApplication()
guard let window = app.keyWindow else {
fatalError("No keyWindow\n")
}
print(window)
}
Run Code Online (Sandbox Code Playgroud)
在启动时我遇到了错误情况,因为我的局部window
变量为零。然而,当我显示 app 变量的内容时,我看到_keyWindow
. 另请注意,空白的 GUI 窗口显示在堆栈转储旁边的屏幕上。
为什么keyWindow: NSWindow?
在这种情况下属性返回 nil?谢谢
鉴于以下测试代码,为什么字符串插值\(t1)和\(t2)不起作用?重命名description
会导致编译器失败,"类型'测试'不符合协议'可打印'",并且description
显然可以在给定每个测试的第二个println时使用.
enum Test: Printable {
case A
case B(Int)
var description: String {
switch self {
case .A:
return ".A"
case let .B(value):
return ".B: value = \(value)"
}
}
}
let t1 = Test.A
let t2 = Test.B(-100)
println("t1 = \(t1)") // prints "t1 = (Enum Value)"
println(t1.description) // prints ".A"
println("t2 = \(t2)") // prints "t2 = (Enum Value)"
println(t2.description) // prints ".B: value = -100"
Run Code Online (Sandbox Code Playgroud)