我有一个非常简单的installTapOnBus
闭包,可以成功更新控制台,但不能更新 UI 元素。这是代码:
self.meter.text="..."
let inputNode = audioEngine.inputNode
let bus = 0
inputNode!.installTapOnBus(bus, bufferSize: 2048, format: inputNode!.inputFormatForBus(bus)) {
(buffer: AVAudioPCMBuffer!, time: AVAudioTime!) -> Void in
var someFeature:Float=0.0
for var i=0; i<Int(buffer.frameLength); i += 1{
someFeature += fabs(buffer.floatChannelData.memory[i])
}
someFeature /= Float(buffer.frameLength)
self.meter.text="\(someFeature)" // No effect!
print("\(someFeature)") // This works
}
也许我需要发送self
对闭包的弱引用,但不确定语法。任何关于如何更新 UI 元素的反馈/想法都会很棒!谢谢阅读。