关于如何使用Swift 2@convention(c)类型注释,有哪些具体示例?
我似乎无法让Xcode 7(beta版)接受我使用Swift 2关于如何使用Swift 2@convention(c)类型注释,有哪些具体示例?,swift,swift2,Swift,Swift2,我似乎无法让Xcode 7(beta版)接受我使用Swift 2@convention(c)类型注释?有人能提供一些语法正确的@convention(c)用法示例吗?除非您正在编写混合应用程序,其中Objective-c需要调用您的Swift代码,否则您不需要@convention(c) 以下是两个Swift方法声明: func blockTaker(f:()->()) {} func functionTaker(f:@convention(c)() -> ()) {} Objec
@convention(c)
类型注释?有人能提供一些语法正确的@convention(c)
用法示例吗?除非您正在编写混合应用程序,其中Objective-c需要调用您的Swift代码,否则您不需要@convention(c)
以下是两个Swift方法声明:
func blockTaker(f:()->()) {}
func functionTaker(f:@convention(c)() -> ()) {}
Objective-C将第一个视为使用Objective-C块,第二个视为使用指向函数的C指针
这就是
@convention(c)
所带来的区别。非常有趣:)我听说过这个“谷歌”的东西,并且真的去了那里。请给我看一两页中的一个站点,它实际上符合我的要求——这是一个使用方法的例子。Kametrixom——当你使用func
关键字定义函数时,你能使用它吗(@convention(c))?@ChrisMarkle我想你不能,但这并不重要,因为闭包是一个函数,在各个方面都像一个函数。对不起,这个笑话;)我试图定义此回调以呈现给VTCompressionSessionCreate()并得到一个错误。为什么呢<代码>让回调:@convention(c)(a:UnsafeMutablePointer,b:UnsafeMutablePointer,c:OSStatus,d:vtcodecodeinfoflags,e:CMSampleBuffer?->Void={return}我得到的错误是:。。。错误:元组类型“(a:UnsafeMutablePointer,b:UnsafeMutablePointer,c:OSStatus,d:VTEncodeInfoFlags,e:CMSampleBuffer?)和“()”具有不同数量的元素(5对0)
@ChrisMarkle您提供的闭包{return}
具有类型Void->Void
。您应该添加参数:{a,b,c,d,e in}
(编译器在返回时崩溃)@Kametrixom的回复中@convention(c)
的用法是什么?我不知道您的意思。我已经回答了这个问题。我说的,我说的。从这里开始。好的@matt,但你注意到,@convention(c)
的区别在于它将函数定义为“将c指针指向函数”,但我不认为这是在@Kametrixom answer中的let语句中使用它的意思。你想什么,你想什么。我说了,我说了。你总是有整洁的答案@matt。谢谢你
func blockTaker(f:()->()) {}
func functionTaker(f:@convention(c)() -> ()) {}