Objective-CにC#に似たものはありyield return
ますか?
2 に答える
直接は存在せず、dasblinkenlightが言及しているようにfast enumeration
存在しますが、かなり異なります。
Mike Ashは、2009年にこの質問に答え、ジェネレーターの実装を考え出しました(同様の概念)。
http://www.mikeash.com/pyblog/friday-qa-2009-10-30-generators-in-objective-c.html
ランタイムウィザードのかなりきちんとしたビットですが、基礎となるシステムとはまったく異なるデザインパターンを可能にするという理由だけで、必ずしもそれを採用することをお勧めするわけではありません。保守および学習曲線のコストは、実稼働環境で使用するにはかなり高額になります。
No, there is nothing in Objective-C that would let you built an iterable solution that easily.
In general, fast enumeration in Objective-C is built using an entirely different mechanism from C#, Java, or C++. Adopting the protocol is relatively complex, especially compared to C# with its yield return
, though it is certainly doable.
I found that Objective-C blocks provide a usable alternative to fast enumeration. Consider implementing a block-based enumeration instead of fast enumeration - it lets you program your own API using the style similar to yield return
. On the flip side, the clients of your API would need to supply a block to use your enumeration. This is not ideal, but usable, especially for complex enumerators, such as ones based on trees.