Есть ли в Objective-C что-нибудь похожее на C #

Есть ли в Objective-C что-нибудь похожее на C #?yield return

 Cœur27 февр. 2019 г., 16:20
В случае, если кто-то ищет тот же вопрос относительно Swift:Быстрый эквивалент РубиУступать"
 matt27 февр. 2019 г., 15:59
@ СОяспасибо за указатель! хорошая командная работа
 matt27 февр. 2019 г., 15:02
@ СОяВообще-то, я бы предложил дублировать другой способ и сделал это; хотя этот ответ позже, он содержит классные и классные ответы, один из которых принят, а другой никуда не идет.
 Richard J. Ross III13 окт. 2012 г., 00:24
Вызов принят.

Ответы на вопрос(2)

Решение Вопроса

Нет, в Objective-C нет ничего, что позволило бы вам легко создать итеративное решение.

В общем,быстрое перечисление в Objective-C построен с использованием совершенно другого механизма из C #, Java или C ++. Принятие протокола является относительно сложным, особенно по сравнению с C # с егоyield returnХотя это, конечно, выполнимо.

Я обнаружил, что блоки Objective-C предоставляют удобную альтернативу быстрому перечислению. Рассмотрите возможность реализации перечисления на основе блоков вместо быстрого перечисления - оно позволяет вам программировать свой собственный API, используя стиль, подобныйyield return, С другой стороны, клиенты вашего API должны будут предоставить блок для использования вашего перечисления. Это не идеально, но удобно, особенно для сложных счетчиков, таких как основанные на деревьях.

 Michael Ozeryansky08 окт. 2016 г., 05:11
Также есть много дополнительных преимуществ от использования блока вместо yield, потому что обратный вызов может содержать больше, чем просто возвращаемый элемент.

Нетт и, как упоминает dasblinkenlight,fast enumeration существует, но немного отличается.

Майк Эш взялся за этот вопрос в 2009 году и предложил реализацию генераторов (схожая концепция):

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

Довольно аккуратное волшебство во время выполнения, но я бы неОбязательно предлагайте принять его просто потому, что он допускает шаблоны проектирования, которые совершенно чужды базовой системе; затраты на обслуживание и обучение будут довольно высокими для использования в производственной среде.

Ваш ответ на вопрос