我写了一个函数来显示midi事件。 MIDI输入设备每25ms发送一个音符。 在我的应用程序执行一段时间后,uitextview刷新非常慢。
有谁知道如何解决这个问题? 我想在获得MIDI事件后更新UI。
谢谢。
func MyMIDIReadBlock(packetList: UnsafePointer<MIDIPacketList>, srcConnRefCon: UnsafeMutableRawPointer?) -> Swift.Void {
let packets = packetList.pointee
let packet:MIDIPacket = packets.packet
var ap = UnsafeMutablePointer<MIDIPacket>.allocate(capacity: 1)
ap.initialize(to:packet)
var p = ap.pointee
for _ in 0 ..< packets.numPackets {
p = ap.pointee
str_event = handle(p)
//show_note_event(event:str_event)
DispatchQueue.main.async{
//self.current_note_index.text = self.str_event
self.show_input_event.text.append(self.str_event) //append string to uitextview
let range = NSMakeRange(self.show_input_event.text.characters.count - 1, 1)
self.show_input_event.scrollRangeToVisible(range)
}
ap = MIDIPacketNext(ap)
}
}