因此,有多种方法可以通过选择器或代码块运行数组的所有元素。makeObjectsPerformSelector:
和更多
如果您手头有 4 个或 16 个核心,您可能希望将所有处理发送到不同的进程。
即使在 iOS 上,将它们全部送走也可能是明智的做法,或者至少让它们完成,无论风向如何。
最好和最简洁的方法是什么在可可环境中这样做?
再说一遍,如果您想随时将它们发送出去怎么办,即,不要等待枚举完成后再执行以下指令...?
如果您想要并发和同步行为(即,在执行以下指令之前等待枚举完成),-[NSArray enumerateObjectsWithOptions:usingBlock:]
如果你通过了,就会这样做NSEnumerationConcurrent
选项。此方法适用于 Mac OS 10.6+ 和 iOS 4.0+。
如果您想要异步行为,您可以使用标准多线程解决方案之一,例如 NSOperation 或 GCD 结合-enumerateObjectsWithOptions:usingBlock:
。例如,
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[array enumerateObjectsWithOptions:NSEnumerationConcurrent
usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
// do something with obj
}];
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)