Objective-C中有什么类似于C#yield return
?
答案 0 :(得分:3)
没有直接的,并且正如dasblinkenlight所提到的,fast enumeration
存在,但是有点不同。
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的客户端需要提供一个块来使用枚举。这不是理想的,但可用,特别是对于复杂的枚举器,例如基于树的枚举器。