3

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

4

2 回答 2

3

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

一般来说, Objective-C 中的快速枚举是使用与 C#、Java 或 C++ 完全不同的机制构建的。采用该协议相对复杂,尤其是与带有它的 C# 相比yield return,尽管它肯定是可行的。

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

于 2012-10-12T22:10:29.340 回答
3

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

Mike Ash 在 2009 年提出了这个问题,并提出了生成器的实现(类似概念):

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

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

于 2012-10-12T22:28:10.663 回答