【发布时间】:2016-01-19 19:10:47
【问题描述】:
我有一个非常简单的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 元素的反馈/想法都会很棒!感谢阅读。
【问题讨论】:
标签: ios swift core-audio avaudioengine