Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Использование  блоков Objective-C

0

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

Создайте новую программу командной строки Foundation с именем VowelMovement. В этой программе мы используем блок для перебора массива строк с последовательным преобразованием каждой строки. Сначала мы создадим три массива: для исходных строк, для строк с удаленными гласными и для хранения символов, удаляемых из строк. В файле main.m замените код в фигурных скобках

@аutоrеlеаsерооl:

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

{

@autoreleasepool {

// создание массива строк, из которых удаляются гласные,

// и контейнера для новых строк

NSArray *oldStrings = [NSArray arrayWithObjects:

@"Sauerkraut", @"Raygun", @"Big Nerd Ranch", @"Mississippi",

nil];

}

NSLog(@"old strings: %@", oldStrings); NSMutableArray *newStrings = [NSMutableArray array];

// создание списка символов, удаляемых из строки NSArray *vowels = [NSArray arrayWithObjects:

@"a", @"e", @"i", @"o", @"u", nil];

return 0;

}

Здесь ничего нового; мы просто создаем массивы. Постройте и запустите программу. На предупреждения о не используемых переменных пока не обращайте внимания.

Объявление блочной переменной

Теперь займемся кодом блока. Хотя блоки внешне похожи на функции, они могут храниться в переменных. Как и другие переменные. блочные переменные объявляются, после чего им присваиваются значения. Включите следующий код в main.m, чтобы объявить блочную переменную.

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

{

@autoreleasepool {

// создание массива строк, из которых удаляются гласные,

// и контейнера для новых строк

NSArray *oldStrings = [NSArray arrayWithObjects:

@"Sauerkraut", @"Raygun", @"Big Nerd Ranch", @"Mississippi",

nil];

}

NSLog(@"old strings: %@", oldStrings); NSMutableArray *newStrings = [NSMutableArray array];

// создание списка символов, удаляемых из строки

NSArray *vowels = [NSArray arrayWithObjects:

@"a", @"e", @"i", @"o", @"u", nil];

// объявление блочной переменной

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

return 0;

}

Давайте посмотрим, из каких частей состоит это объявление.

признак блока                          аргументы, разделенные запятыми

тип возвращаемого значения

имя блочной переменной

Рис. 32.1. Объявление блочной переменной

Объявляя примитивную переменную, вы указываете ее тип и имя – например, int i. Для блочной переменной имя указывается в середине объявления, сразу же за символом «^». Тип блочной переменной зависит от способа конструирования блока. В данном случае devowelizer относится к типу «блок, который получает объект, целое число и указатель на BOOL и не возвращает ничего».

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

По теме:

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