我正在检查 RunLoop iOS documentation它讨论了这里说明的想法:
(来源:apple.com)
在 RunLoopSource 中,它为客户端线程(即上图中的主线程)提供以下接口(interface),以用命令和数据填充音频缓冲区,并随后触发所述缓冲区中的所有可用命令:
// Client interface for registering commands to process
- (void)addCommand:(NSInteger)command withData:(id)data
- (void)fireAllCommandsOnRunLoop:(CFRunLoopRef)runloop
在添加命令方法中,我们只是将命令添加到 NSMutableArray 数据结构中。
我的问题是我们如何将这些命令封装在变量中,使它们成为方法。addCommand 方法中的 data 变量的类型为 id.. 例如,我们可以在那里放一个 block 吗?这里有任何最佳实践/示例代码等吗?谢谢。
最佳答案
该技术早于区 block 。使用并发 block 的优点在于,您可以在系统中投入尽可能多的工作,并且考虑到其总设备范围,可以根据需要在多个核心和线程上安排该工作。您还可以使用并发 NSOperation 并让它实现 fifo 来接受工作并处理它,但在这种情况下,只会有辅助线程,并且它将再次按照系统认为适合的方式安排运行时间,因此与 block 相比没有优势。
关于ios - 如何填充工作线程的命令缓冲区(iOS线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12388616/