1
在我的代碼中,我初始化了兩個單例。我有var session = AVAudioSession.sharedInstance
和var audioSession = AVAudioSession.sharedInstance
。我然後setActive(false)
第二個單身人士。爲什麼我需要創建第二個?爲什麼不能創建第一個單例到setActive(false)
?爲什麼我需要爲音頻創建一個sharedInstance?
我相信這是因爲單身人士每班只能有一個實例;不過,我只是關閉音頻會話,所以我不明白爲什麼我需要兩個單身人士來做到這一點。
@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)
}
}
我不明白...你爲什麼認爲你需要兩個單身? – 2015-04-02 03:08:40
事實上,「兩個單身」是一個非sequiter。 AVAudioSession.sharedInstance()總是返回一個實例 - 單例。不是兩次調用'sharedInstance',你可以將第一次調用的引用保存在一個屬性中,然後使用它,但是因爲使用了局部變量,所以需要第二次獲取該引用。 – Paulw11 2015-04-02 03:24:31
@ Paulw11聽起來像將'sharedInstance'設置爲全局屬性而不是局部變量可以解決這個問題嗎? – Michael 2015-04-02 04:11:13