IOS4在UIKit中引入了Block特性。继而很多的API都使用了Block,因此,我们需要详细掌握Block的使用。
Block是对C语言的扩展,用来实现匿名函数的特性。
将Block宣告成变量使用:
int (^maxBlock) (int, int) = ^(int x, int y) {return x > y ? x : y};
在这个Block中,首先指定返回值类型为int型,其次指定函数名为^maxBlock,在等号左边的括号里指定两个参数的类型,等号右边括号里指定这两个参数所对应的值分别有x和y两个变量代替,{}中就是这个函数所要执行的运算,即比较x和y返回其中的最大值。
直接使用Block作为参数
char *myCharacters[ 3 ] = { "TomJohn" , "George" , "Charles Condomine" };
qsort_b (myCharacters, 3 ,
sizeof ( char *),
^( const void *l, const void *r)//block部分
{
char *left = *( char **)l;
char *right = *( char **)r;
return strncmp (left, right, 1 );
} //end
);