【发布时间】:2015-10-17 00:14:59
【问题描述】:
我花了好几个小时试图从MediaToolbox库中创建一个MTAudioProcessingTapCallbacks,使用Swift 2。我发现this great article在Objective-C中实现, 所以我想我会尝试用 Swift 重写它,以便我能更好地理解它,但目前这证明有点超出我的能力。
主要问题是我找不到将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 = ???
标签: ios objective-c swift swift2 mediatoolbox