O'Reilly logo

iOS 7 Programming Cookbook by Vandad Nahavandipoor

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

7.3. Invoking Block Objects

Problem

You’ve learned how to construct block objects, and now you want to execute your block objects to get results.

Solution

Execute your block objects the same way you execute a C function, as shown in the Discussion section.

Discussion

We’ve seen examples of invoking block objects in Recipes 7.1 and 7.2. This section contains more concrete examples.

If you have an independent block object, you can simply invoke it just like you would invoke a C function:

void (^simpleBlock)(NSString *) = ^(NSString  *paramString){
    /* Implement the block object here and use the
     paramString parameter */
};

- (void) callSimpleBlock{
    
    simpleBlock(@"O'Reilly");
    
}

If you want to invoke an independent block object within another independent block object, follow the same instructions by invoking the new block object just as you would invoke a C method:

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);
    
}

In this example, go ahead and invoke the callTrimBlock Objective-C method:

[self callTrimBlock];

The callTrimBlock method will call the trimWithOtherBlock block object, and the trimWithOtherBlock block object will call ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required