Blocks Blocks are executable code just like a function. It can be written inside a function or we can store the reference in a variable and call it later. But wait a minute these all functionality we can achieve by function pointer and functions. Then what is so special about blocks? Let first go through how we can define blocks. int (^sum)( int , int ) = ^( int number1, int number2){ return number1+number2; }; The above block can be used to find the sum of two numbers. If we recall the function pointer in c then it is very much similar to above: int sumFunction ( int number1, int number2){ return number1+number2; } int (*sum) ( int , int ) = sumFunction; //Function Pointer *sum Then Why we need Blocks if we already have Function pointer? 1) B locks can capture variables from the enclosing scope by simply referring to them within the block. How ? Let see the next Section 2) Blocks...