OC学习那些事:Block (转)

1.Block

Block封装了一段代码,可以在任何时候执行

Block可以作为函数的参数,或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针类似,但是有区别:block是inline(内联函数)的,并且默认情况下它对具备变量是可读的。

苹果官方建议尽量多用block。在多线程、异步任务、集合遍历、集合排序、动画转场的很多

2.Block的使用

方法一

1.定义block,这个block相当于函数

  1. //返回类型(^Block名称)(参数)  
  2. int (^Sum) (int, int) = ^(int a,int b){  
  3.     return a + b;  
  4. };  

2.调用代码块

 
  1. int a = Sum(10,11);  
  2. NSLog(@"%i",a);    

方法二

1.定义一个block类型

  1. typedef int (^MySum) (int, int);    

2.声明了一个block变量

 

  1. //使用__block关键字,可以使block改变该变量  
  2. __block int c = 15;  
  3. MySum sum = ^(int a,int b)  
  4. {  
  5.     //可以访问局部变量,但是默认情况下,不可以修改  
  6.     c = 19;  
  7.     NSLog(@"c is %i",c);  
  8.     return a+b;  
  9. };  
  10. NSLog("%i",sum(10,10));
 

3.Block的注意

Block可以访问局部变量,但是默认情况下不能修该

posted @ 2013-09-03 12:37  李小见  阅读(848)  评论(0编辑  收藏  举报