Objective-C中有什么类似于C#yield return

时间:2012-10-12 22:08:20

标签: objective-c

Objective-C中有什么类似于C#yield return

2 个答案:

答案 0 :(得分:3)

没有直接的,并且正如dasblinkenlight所提到的,fast enumeration存在,但是有点不同。

迈克·艾什在2009年提出了这个问题,并提出了一个发电机的实施(类似的概念):

http://www.mikeash.com/pyblog/friday-qa-2009-10-30-generators-in-objective-c.html

相当简洁的运行时魔法,但我不一定建议采用它只是因为它使设计模式与底层系统相当陌生;在生产环境中使用维护和学习曲线的成本非常高。

答案 1 :(得分:2)

不,Objective-C中没有任何内容可以让您轻松构建可迭代的解决方案。

通常,Objective-C中的fast enumeration是使用与C#,Java或C ++完全不同的机制构建的。采用该协议相对复杂,特别是与C#及其yield return相比,尽管它当然可行。

我发现Objective-C块提供了快速枚举的可用替代方法。考虑实现基于块的枚举而不是快速枚举 - 它允许您使用类似于yield return的样式编写自己的API。另一方面,API的客户端需要提供一个块来使用枚举。这不是理想的,但可用,特别是对于复杂的枚举器,例如基于树的枚举器。