1.block 是oc的一个数据类型

2.作用:用了封装一段代码,可以在任何时候调用执行。即在编译的时候忽略block修饰的代码段,在调用这个代码时,也就是运行时,

    编译器会自动加载这个代码, so这样的程序,效率非常高

3.语法:

  定义一个block类型的变量:有参-》返回值类型 (^变量名) (参数类型1,参数类型2)    。eg. void (^myblock)(int,int)

               无参-》返回值类型 (^变量名)   eg. void (^myblock)

  定义一个block代码段:    有参-》^(参数类型1 参数名称,参数类型2 参数名称){// 代码,也可以有返回值}

              无参-》^(){//代码}或 ^{//代码}

  调用一个block代码段:变量名(参数值...)

4.用typedef 定义一个bolck类型的变量:

  定义:  typedef  返回值类型 (^自定义类型名) (参数类型,...)

  使用:     自定义类型名  变量名=^(参数类型 参数名称,...)`{//代码}

这个使用类似指向函数的指针:定义-》返回值 (*指针名) (参数类型,...),赋值-》指针名=函数名称,调用-》指针名(参数值,...)

5.block代码段内,可以访问该代码段外的变量,但是默认不能修改外部的变量,

   使用 __block 关键字修饰的变量,在block代码段内就可以修改了

  eg. __block int a=0;

 

posted on 2015-05-17 15:29  Angel_baby  阅读(285)  评论(0编辑  收藏  举报