A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© L503254118 中级黑马   /  2015-10-12 08:02  /  653 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最简单的定义格式:void(^block名)()=^{代码块;};  //无参无返回值
       使用:block名();
       int(^myBlock)(int)(int)=^(int x)(int y){
       return x+y;
      };

block的typedef:typedef  返回值类型(^新别名)(参数类型表);
block访问外部变量:block会把外部变量以const的方式复制一份存在block的内存中
int m=10;            
        void(^myBlock)()=^{
            NSLog(@"1m addr =%p",&m);//存在堆区
            NSLog(@"2m=%d",m);
        };      
        myBlock();
        NSLog(@"3m addr =%p",&m);//存在栈区
        NSLog(@"4m=%d",m);
注意:block可以修改全局变量,不可以修改局部变量,如果想要修改,需要在定义变量的时候,前面+“__block”,如果在block内部定义的变量是存在栈区。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马