37

Swift 2 に移行した後、@convention(c) (T) -> U を使用する必要があるというエラーでこの問題が発生しています。順列を試しましたが、今のところうまくいきません。

func foo(context: AnyObject?, width: CGFloat) -> Int {

}

let bar = unsafeBitCast(foo, CFunctionPointer<(UnsafeMutablePointer<Void>, Float) -> Int>.self)
4

2 に答える 2

22

Swift 2 で CFunctionPointer を作成する必要がなくなりました。代わりに、この場合は を呼び出して型に注釈を付け、cそれを直接使用できます。

typealias CFunction = @convention(c) (UnsafeMutablePointer<Void>, Float) -> Int
let bar = unsafeBitCast(foo, CFunction.self)

The Swift Programming Language@conventionの Type Attributes セクションの説明の関連ビットは次のとおりです。

c 引数は、C 関数参照を示すために使用されます。関数値はコンテキストを持たず、C 呼び出し規約を使用します。

于 2015-06-09T19:07:27.030 に答える