swift - SWIFT2在什么用例中,如果有的话,应该选择在快速中央调度中的`_f` 变体

  显示原文与译文双语对照的内容

基于苹果并发编程指南和大型中央调度( 梯边梁) 参考的,有两种类型的GCD呼叫。

使用标准快速关闭可以使用的口味 "块"


void dispatch_async( dispatch_queue_t queue, 


 dispatch_block_t block );



块"关闭"在堆栈上分配存储的位置


typedef void (^dispatch_block_t)(void);



带有上下文对象和函数指针的dispatch_function_t 口味的口味。


void dispatch_async_f( dispatch_queue_t queue, 


 void *context, 


 dispatch_function_t work );



应用程序定义的上下文对象被传递给调度函数 work 作为 void * 对象指针参数。


typedef void (*dispatch_function_t)(void *); 



观察
实际上,如 dispatch_async_fdispatch_sync_f 这样的_f 例程使用非常接近非 existant 。

为什么不?

是否有任何技术原因或者设计模式,可以考虑在快速应用中考虑大中央调度 _f context+fuction变量?

时间: 原作者:

只有 objective-c 和Swift有语法,这些语法与GCD中的块/闭包的API兼容。 由于for是低级别的,并且设计用于它的他语言,_f变量允许传递 function instead (i.e., you could use them with a C language program) 。

为了回答实际问题,在Swift中使用函数API可能没有特别好的理由。 在使用_f变量时可以能会有一个性能赢得,但除非在短时间内调度数千个调用,否则可以能会忽略( gcd/run循环可能会使这种方法成为一种坏方法) 。

原作者:
...