Еще раз о блоках в Objective-C.

2 comments
Тема блоков очень много раз уже обсуждалась. И полезность их оговаривалась очень много раз. Но анализируя код, которы попадает мне в руки, могу констатировать тот факт, что блоки сейчас используются только при крайней необходимости.


Более того, я до сих пор не могу привыкнуть к наличию замыканий в компилируемом языке. Это обычная практика для скриптовых языков, но в C/C++ семействе эта технология только начала приходить, например вот в C++0x  и  в Objective-C (да-да, я знаю про наличие замыканий в C# например, но C# в этом плане тяжело отнести к С/С++ семейству из-за управляемого кода).




Я умышленно буду использовать разные названия для блоков:  лямбда, замыкание. По сути - это одно и тоже и жаль, что в разных языках это называется по разному. Еще есть один термин, который путать не нужно - это анонимные функции. Блоки могут быть анонимными фукнциями, но это не обязательно. Вот тут подробней можно почитать об анонимных фукнциях.

Это немного огорчает, так как блоки - это очень мощный и очень простой инструмент, который позволит сэкономит время и уменьшить количество кода.
Поэтому я начал этот цикл статей, чтоб убедить окружающих и себя в первую очеред, в необходимости перестроения мозга для перехода на блоки.

В этой статье ограничусь ссылками для ознакомления с принципами.
Первое - это общее описание замыкани и примеры в различных языках (к сожаленю там нет Objective-C).
Второе - это конечно-же официальная документация от Apple:
Подробное описание блоков.
Практическое руководство по использованию блоков.
Руководство от Pragmatic Studio.

Русскоязычные ресурсы:
цикл статей на хабре: О блоках и их использование в Objective-c часть1, часть 2 и часть 3.
Лекция о блоках от e-legion.
Ну и видео, для любителей такого вида обучения от e-Legion.


В следующей статье я попробую резюмировать всю информацию о блоках в небольшом эссе в виде шпаргалки-описалки.
Всем спасибо за внимание, буду рад пообщаться в коментариях.


2 комментария:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. мой email на всякий случай miv94new@yandex.ru

    ОтветитьУдалить