gpt4 book ai didi

ios - 为什么我需要为音频创建一个 sharedInstance?

转载 作者:搜寻专家 更新时间:2023-11-01 06:47:05 24 4
gpt4 key购买 nike

在我的代码中,我初始化了两个单例。我有 var session = AVAudioSession.sharedInstancevar audioSession = AVAudioSession.sharedInstance。然后我为第二个单例 setActive(false)。为什么我需要创建第二个?为什么我不能将第一个单例设置为 setActive(false) 而不是创建第二个单例?

我相信这是因为单例的每个类只能有一个实例;然而,我只是关闭了 Audio Session ,所以我不明白为什么我需要两个单例来做这件事。

@IBAction func recordAudio(sender: UIButton) {
recordButton.enabled = false
stopButton.hidden = false
recordAudioOutlet.hidden = false

//Get a file path to store the audio recording
let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String

let currentDateTime = NSDate()
let formatter = NSDateFormatter()
formatter.dateFormat = "ddMMyyyy-HHmmss"
let recordingName = formatter.stringFromDate(currentDateTime)
let pathArray = [dirPath, recordingName]
let filePath = NSURL.fileURLWithPathComponents(pathArray)
println(filePath)

//Setup audio session
var session = AVAudioSession.sharedInstance()
session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: nil)

//Initialize and prepare the recorder
audioRecorder = AVAudioRecorder(URL: filePath, settings: nil, error: nil)
audioRecorder.meteringEnabled = true
audioRecorder.record()
}

@IBAction func stopAudio(sender: UIButton) {
//Stop recording the user's voice
recordAudioOutlet.hidden = true
audioRecorder.stop()
var audioSession = AVAudioSession.sharedInstance();
audioSession.setActive(false, error: nil)
}
}

最佳答案

AVAudioSession是一个单例进程,不能播放(或录制)2 个不同的音频。如果您从您的应用程序启动音频,正在运行的音频(就像您正在听音乐一样)将暂停。为什么不只创建一个(可能是 class)variable 来管理 AVAudiosession

如果你创建变量 2 次,它里面有相同的东西(因为单例总是返回相同的实例)。

关于ios - 为什么我需要为音频创建一个 sharedInstance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29404352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com