EXEC_BAD_INSTRUCTION (код =1, адрес =0xe) с MusicSequenceBarBeatTimeToBeats в Swift 2
У меня проблема при использовании API Apple MusicSequence C в Swift 2. Я не могу понять, как избавиться от EXEC_BAD_INSTRUCTION при вызове MusicSequenceBarBeatTimeToBeats
,
Я пробовал много разных решений, найденных в интернете, но, похоже, ничего не работает.
Моя первая попытка, которая не привела к ошибке компиляции, была:
import Cocoa
import AudioToolbox
var musicSequence = MusicSequence()
NewMusicSequence(&musicSequence)
var barBeatTime = CABarBeatTime(bar: 1, beat: 1, subbeat: 0, subbeatDivisor: 960, reserved: 0)
var musicTimeStamp: MusicTimeStamp = 0
MusicSequenceBarBeatTimeToBeats(musicSequence, &barBeatTime, &musicTimeStamp)
Результат: EXEC_BAD_INSTRUCTION (код =1, адрес =0xe) в строке кода MusicSequenceBarBeatTimeToBeats
Затем я попытался с этим, но с тем же результатом:
var barBeatTime = CABarBeatTime(bar: 1, beat: 1, subbeat: 0, subbeatDivisor: 960, reserved: 0)
var musicTimeStamp = UnsafeMutablePointer<MusicTimeStamp>.alloc(sizeof(MusicTimeStamp))
MusicSequenceBarBeatTimeToBeats(musicSequence, &barBeatTime, musicTimeStamp)
musicTimeStamp.dealloc(sizeof(MusicTimeStamp))
Я попробовал withUnsafeutablePointer
функция, но с той же ошибкой во время выполнения:
var barBeatTime = CABarBeatTime(bar: 1, beat: 1, subbeat: 0, subbeatDivisor: 960, reserved: 0)
var musicTimeStamp: MusicTimeStamp = 0
withUnsafeMutablePointer(&musicTimeStamp,
{
MusicSequenceBarBeatTimeToBeats(musicSequence, &barBeatTime, UnsafeMutablePointer($0))
})
Если я передаю nil в третьем параметре, он не падает, но это бесполезно, потому что вывод отсутствует. Так что, похоже, это UnsafeMutablePointer<MusicTimeStamp>
выходной параметр, который является проблемой.
MusicSequenceBarBeatTimeToBeats(musicSequence, &caBarBeatTime, nil)
Какие-либо предложения?