我遇到Swift 2的问题,我无法转换这部分代码:
let intTran = UnsafeMutablePointer<Int>(bitPattern: -1)
let tranPointer = COpaquePointer(intTran)
let transient = CFunctionPointer<((UnsafeMutablePointer<()>) -> Void)>(tranPointer)
我收到此错误:
&#39; CFunctionPointer&#39;不可用:使用函数类型&#39; @convention(c)(T) - &gt; U&#39;
我试图以这种方式改变它:
let intTran = UnsafeMutablePointer<Int>(bitPattern: -1)
let tranPointer = COpaquePointer(intTran)
typealias transient2 = @convention(c) (UnsafeMutablePointer<()>) -> Void
但我无法使用transient2而且我不确定原因。
比你
答案 0 :(得分:0)
我一直在Swift游乐场里玩你的代码并注意到这段代码(你替换到原来的代码)由于bitPattern设置为-1而失败(注意我已经得到了一个运行时异常 - 不是编译器错误)。当我用适当的东西替换它时(例如,使用1,因为bitPattern必须代表虚拟地址空间内的有效地址,并且暗示必须是非负整数)。我设法使用以下代码完成并运行:
import Foundation
let intTran = UnsafeMutablePointer<Int>(bitPattern: 1)
let tranPointer = COpaquePointer(intTran)
typealias transient2 = @convention(c) (UnsafeMutablePointer<()>) -> Void
let abc: transient2? = nil
祝你好运,希望这能解决你的问题。