关于Block的简单使用
Block在整个iOS开发中无所不见,很重要,很重要,文本在这里block的简单使用介绍。我们可以简单地定义、使用block。
1. Block和C的指针函数很像,但比C的函数灵活多了。废话了。。。。
例子比较:
1 //C函数 2 int funSum(int a, int b) { 3 return a + b; 4 } 5 6 int main(int argc, const char * argv[]) { 7 @autoreleasepool { 8 9 //定义了pointSum这种指针类型, 这种指针类型指向函数 10 typedef int (*pointSum) (int, int); 11 12 //定义了一个指针变量ps, 赋值funSum 13 pointSum ps = funSum; 14 15 //C函数调用 16 int a = ps(12, 23); // (*ps)(12, 23); 17 NSLog(@"a = %i", a); 18 } 19 return 0; 20 }
int main(int argc, const char * argv[]) { @autoreleasepool { //定义了blockSum这种block的类型,注blockSum为类型名 typedef int (^blockSum) (int, int); //定义了一个blockSum类型的block变量bs 并为其赋值block块内容 blockSum bs = ^(int a, int b) { return a + b; }; int a = bs(12, 34); NSLog(@"a = %i", a); } return 0; }
2. Block定义及使用
1 void BlockDemo() { 2 3 //声明 一个名为blockSum返回值为int类型,接受两个int、int类型的参数的Block, 也可以写成这样 int (^blockSum) (int a, int b); 4 int (^blockSum) (int, int); 5 6 //赋值 (这个名为blockSum的代码段所要做的事情) 7 blockSum = ^(int a, int b) { 8 return a + b; 9 }; 10 11 //调用这个block赋值给变量a 12 int a = blockSum(1, 3); 13 NSLog(@"a=%i", a); //a = 4 14 }
1 typedef int (^blockSum) (int, int); //typedef修饰的block类型,这种类型可以定义任意多,我们在开发中它来定义block很常见 2 void blockDome() { 3 //int c =100000000; 4 __block int c =100000000; //此处是两个"_" 5 blockSum bs = ^(int a, int b){ 6 a = 4; //block代码快可以访问局不变量,但不能修改局不变量的值, 若要修改必须在定义该变量前加__block修饰 7 c = a + b; 8 return a + b; 9 }; 10 11 NSLog(@"block修改前:c = %i", c); 12 bs(1, 4) 13 NSLog(@"block修改后:c = %i", c); 14 }