我在 iOS 上做过一些 Swift 和相当多的 Objective-C,但基本上没有真正的 OS X 编程,所以我没有使用过 NSSound
。我试图在 Swift 论坛上帮助某人,但......它不起作用。我不确定为什么。
在 playground、Swift REPL 甚至脚本 (#!/usr/bin/env swift
) 中,我可以成功实例化一个 NSSound:
NSSound(named:"Hero")
在 REPL/Playground 或从脚本中打印,我可以看到可选的里面有一个 NSSound。但是当我调用 play()
时,我听不到任何声音:
NSSound(named:"Hero")!.play()
为什么?
这是一小段代码,看起来很简单,但显然我遗漏了一些东西。这没什么大不了的,因为它不是我需要的代码,但它让我很烦恼,因为它看起来很简单,但它不起作用。
最佳答案
NSSound 异步播放它的声音。默认情况下,playground 在执行其代码后立即退出,因此进程在声音有机会播放之前终止。
这里有一种快速而肮脏的方法可以让 Playground 无限期地保持活跃,这样您就可以听到播放的声音。
import Cocoa
import XCPlayground
if let sound = NSSound(named:"Hero") {
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
sound.play()
}
关于Swift NSSound 静音播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34938041/