0

我正在查看 RunLoop iOS文档,它讨论了此处说明的想法:( 来源:apple.com这个

在 RunLoopSource 中,它为客户端线程(即上图中的主线程)提供了以下接口,以用命令和数据填充音频缓冲区,并随后触发所述缓冲区中可用的所有命令:

// Client interface for registering commands to process
- (void)addCommand:(NSInteger)command withData:(id)data
- (void)fireAllCommandsOnRunLoop:(CFRunLoopRef)runloop 

在 add command 方法中,我们只是将命令添加到 NSMutableArray 数据结构中。

我的问题是我们如何将这些命令封装在变量中,使它们成为方法.. addCommand方法中的数据变量是id类型.. 例如,我们可以在其中放置一个块吗?这里有什么最佳实践/示例代码等吗?谢谢。

4

1 回答 1

1

这种技术早于块。使用具有并发性的块的好处在于,您可以在系统上投入尽可能多的工作,并且鉴于其整个设备范围可以在它认为合适的情况下安排在多个内核和线程上工作。您还可以使用并发 NSOperation 并让它实现一个 fifo 来接受工作并处理它,但在这种情况下,只有辅助线程,并且它将再次被安排运行时间,因为系统认为适合给它,所以没有块的优势。

于 2012-09-12T13:01:14.277 回答