Я стучал головой о стену в течение нескольких часов, пытаясь создать MTAudioProcessingTapCallbacks
из MediaToolbox
библиотеки, с помощью Swift 2. я нашел this great article с реализацией в Objective-C, так что я думал Я бы попытался переписать его в Swift, чтобы я мог лучше понять его, но это пока что немного опережает меня.Создать MTAudioProcessingTapCallbacks в Swift 2
Основная проблема заключается в том, что я не могу найти способ бросить возвращаемое значение MTAudioProcessingTapGetStorage(tap)
(которая является UnsafeMutablePointer<Void>
) к RMStreamer
, который, как представляется, является особенностью оригинальной реализации:
RMStreamer *streamer = (__bridge RMStreamer *) MTAudioProcessingTapGetStorage(tap);
Если я попытаюсь это самым очевидным образом:
var streamer = MTAudioProcessingTapGetStorage(tap) as! RMStreamer
Я получаю предупреждение говоря:
В ролях из UnsafeMutablePointer (ака «UnsafeMutablePointer <()> к несвязанной типа RMStreamer всегда терпит неудачу)»
Итак, я узнал, что __bridge
каким-то образом эквивалентно takeUnretainedValue()
, но этот метод не кажется, будет доступна в любом месте в данном контексте. Я подозреваю, что я довольно неосведомлен, но кто-нибудь знает, возможно ли реализовать эту вещь в Swift 2, или мне лучше просто изучить Objective-C и использовать это для MediaToolbox
в будущем?
Эй, Сэм! Как вам удалось создать фактические ответные обратные вызовы? Я застрял в этой точке ... например, 'var callbacks: MTAudioProcessingTapCallbacks ... callbacks.prepare = ???' –