我在i os上做了一些快速和大量的objective-c,但是基本上没有真正的os x编程,所以我没有使用NSSound
。我想在一个快速论坛上帮助某人,然后…它不起作用。我不知道为什么。
在操场、swift repl甚至脚本(#!/usr/bin/env swift
)中,我可以成功地实例化nssound:
NSSound(named:"Hero")
在repl/playground或从脚本打印中,我可以看到可选的内部有一个nssound。但当我打电话给
play()
时,我什么也没听到:NSSound(named:"Hero")!.play()
为什么?
这是一段很小的代码,看起来很简单,但显然我遗漏了一些东西。这没什么大不了的,因为它不是我所需要的代码,但它困扰着我,因为它看起来很简单,但却不起作用。
最佳答案
nssound异步播放其声音。默认情况下,操场在执行其代码后立即退出,因此该进程在声音有机会播放之前终止。
这里有一个快速和肮脏的方法,让操场无限期地活着,这样你就可以听到声音播放。
import Cocoa
import XCPlayground
if let sound = NSSound(named:"Hero") {
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
sound.play()
}