迁移到Swift 2后,出现了一个错误,指出我现在应该使用@convention(c)(T)->U。我已经尝试了排列,但到目前为止还没有运气。
func foo(context: AnyObject?, width: CGFloat) -> Int { } let bar = unsafeBitCast(foo, CFunctionPointer<(UnsafeMutablePointer<Void>, Float) -> Int>.self)
您不再需要在Swift 2中创建CFunctionPointer。相反,您可以通过调用Convention(在这种情况下为)来注释您的类型c,并直接使用它。
c
typealias CFunction = @convention(c) (UnsafeMutablePointer<Void>, Float) -> Int let bar = unsafeBitCast(foo, CFunction.self)
The Swift Programming Language@convention的Type Attributes部分中的描述的相关位是:
@convention
c参数用于指示C函数引用。函数值不包含上下文,并且使用C调用约定。