Главная » iPhone, Objective-C, Программирование для iOS и MacOS » typedef Objective-C

0

Синтаксис блоков может быть довольно сложным, но его можно упростить при помощи ключевого слова typedef, о котором вы узнали в главе 10. Напомню, что определения typedef располагаются в начале файла или заголовка, вне реализации каких-либо методов. Включите в main.m следующую строку кода:

#import <Foundation/Foundation.h>

typedef void (^ArrayEnumerationBlock)(id, NSUInteger, BOOL *);

int main (int argc, const char * argv[])

{

Определение typedef идентично объявлению переменной блока. Однако в данном случае мы объявляем тип, а не переменную, поэтому рядом с символом «^» указывается соответствующее имя типа. Использование typedef упрощает объявления блоков. Запутанное объявление devowelizer:

void (^devowelizer)(id, NSUInteger, BOOL *);

заменяется намного более понятным:

ArrayEnumerationBlock devowelizer;

Такое объявление блочной переменной выглядит более знакомым. Следует помнить, что тип блока определяет только типы его аргументов и возвращаемого значения; он не имеет отношения к набору инструкций в блоке этого типа.

Возвращаемые  значения

Наконец, если блок возвращает значение, то блочную переменную можно вызывать как функцию.

double (^divBlock)(double,double) = ^(double k, double j) { return k/j;

}

В этом коде объявляется блочная переменная divBlock, которая возвращает значение dоublе и получает два значения dоublе в аргументах. Далее переменной

присваивается значение – инструкция, возвращающая результат деления двух аргументов.

Возможное использование блока может выглядеть так:

double quotient = divBlock(42.0, 12.5);

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии