Книга: iOS. Приемы программирования

Обсуждение

Обсуждение

В разделах 7.1 и 7.2 вы видели примеры вызова блоковых объектов. В данном разделе приводятся более конкретные примеры.

Если у вас есть независимый блоковый объект, его можно вызвать так же, как мы вызывали бы функцию на языке C:

void (^simpleBlock)(NSString *) = ^(NSString *paramString){
/* Реализуем блоковый объект и используем параметр paramString. */
};
— (void) callSimpleBlock{
simpleBlock(@"O'Reilly");
}

Если вы хотите вызвать независимый блоковый объект внутри другого независимого блокового объекта, действуйте так же, как при активизации метода на языке C:

NSString *(^trimString)(NSString *) = ^(NSString *inputString){
NSString *result = [inputString stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];
return result;
};
NSString *(^trimWithOtherBlock)(NSString *) = ^(NSString *inputString){
return trimString(inputString);
};
— (void) callTrimBlock{
NSString *trimmedString = trimWithOtherBlock(@" O'Reilly ");
NSLog(@"Trimmed string = %@", trimmedString);
}

Продолжим данный пример и вызовем метод callTrimBlock на языке Objective-C:

[self callTrimBlock];

Метод callTrimBlock вызовет блоковый объект trimWithOtherBlock, а этот объект вызовет блоковый объект trimString, чтобы обрезать указанную строку. Отсечение строки — простая операция, для ее выполнения требуется всего одна строка кода. Но этот пример демонстрирует, как можно вызывать блоковые объекты внутри блоковых объектов.

Оглавление книги


Генерация: 0.086. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз