2012-10-12 30 views
3

目标C中是否有类似于C#的东西yield return目标C中有没有类似于C#收益回报的东西

+0

接受挑战。 –

+0

可能的重复[Objective-C中有没有与C#的yield关键字并行](https://stackoverflow.com/questions/2805837/is-there-any-parallel-in-objective-c-to-cs-yield关键字) –

回答

1

不,在Objective-C中没有任何东西可以让您轻松构建一个可迭代的解决方案。

Objective-C中的fast enumeration一般使用与C#,Java或C++完全不同的机制构建。采用该协议相对而言比较复杂,特别是与C#及其yield return相比,虽然它确实可行。

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

+0

使用块代替yield的好处还有很多,因为回调可以包含更多,然后只包含返回的项目。 –

3

有没有直接和,如dasblinkenlight提到,fast enumeration存在,但是有很大的不同。

迈克·阿什在2009年把这个问题上,并与发电机的实现(类似的概念)想出了:

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

运行巫术的整齐漂亮一点,但我不一定会建议采用它仅仅是因为它使设计模式与底层系统非常相似;在生产环境中使用维护和学习曲线的成本将非常陡峭。

相关问题