1. 在swift文件里是不能写c语言函数的,不兼容c,直接报错。想调用c语言函数,就要利用系统提供的桥接功能,就如同swfit中调用oc一样!
2.swift 2.0后提供了@convention(c) 用来把 swift的闭包函数转化成c语言指针。下面这种情况就会用到这个特性,
我们在c语言文件里,定义了一个函数:
CGFloat myCFunction(CGFloat (callback)(CGFloat x, CGFloat y)) { return callback(1.1, 2.2); }
这里的callback函数是一个c语言函数指针,我们在swift里可以这样使用:
let swiftCallback : @convention(c) (CGFloat, CGFloat) -> CGFloat = { (x, y) -> CGFloat in return x + y } let result = myCFunction( swiftCallback )
也有如下的简化的方法:
let result = myCFunction( { (x, y) -> CGFloat in return x + y } )
3. 如何在老的oc项目中,引入swift代码内容