斯威夫特NSSound默默播放?

时间:2016-01-22 02:35:59

标签: swift cocoa nssound

我在iOS上做了一些Swift和相当数量的Objective-C,但基本上没有真正的OS X编程,所以我没有使用valueOf。我试图在Swift论坛上帮助某人,而且......它没有用。我不确定为什么。

在游乐场,Swift REPL甚至脚本(NSSound)中,我可以成功实例化NSSound:

#!/usr/bin/env swift

在REPL / Playground或从脚本打印,我可以看到可选内部有一个NSSound。但是当我打电话给NSSound(named:"Hero") 时,我什么都没听到:

play()

为什么?

这是一段非常小的代码,看起来很简单,但显然我错过了一些东西。这不是什么大不了的事,因为它不是我需要的代码,但是它让我烦恼,因为它看起来很简单而且它不起作用。

2 个答案:

答案 0 :(得分:2)

NSSound异步播放声音。默认情况下,操场在执行其代码后立即退出,因此该过程在声音有机会播放之前终止。

这是一种快速而肮脏的方式,可以让游乐场无限期地活着,这样你就可以听到声音的发挥。

import Cocoa
import XCPlayground

if let sound = NSSound(named:"Hero") {
    XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
    sound.play()
}

答案 1 :(得分:1)

似乎NSSound是一个可可类,在我测试的任何环境中都无法正常工作:

  • 游乐场
  • Swift脚本
  • Swift REPL

如果我在骨架OS X应用程序中放入相同的一小段代码,那么工作正常。

感谢@Leo推动我实际尝试。我考虑过这种可能性,但在他建议之前没有尝试过。

相关问题