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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 许本亮 中级黑马   /  2015-11-10 11:59  /  741 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Block封装了一段代码,可以在任何时候执行
Block的标志: ^
block跟函数很像:
1.可以保存代码
2.有返回值
3.有形参
int main()
{
//定义block变量,没有返回值,没有形参
//block没有形参时可省略后面的()
void (^myblock)() = ^(){
      NSLog(@“—————”);
      NSLog(@“—————”);    };
int (^sumblock)(int, int) = ^(int a, int b){
    return a + b;   };
int c = sumblock(10,11);
NSLog(@“%d”, c);
//利用typedef定义block类型
//typedef int (^MyBlock)(int, int )
//可以用MyBlock定义block变量
///MyBlock sumBlock;
//sumBlock = ^(int a, int b) {
//   return a + b;
//    };
//int c = sumBlock(10,11);
//用Block输出n条横线
void (^lineBlock)(int) = ^(int n) {
  for (int i = 0; i<n; i++){
       NSLog(@“——————”);
   }
};
lineBlock(5);
int x = 10;
__block int y = 20;
void (^block)();
block = ^{
//block内部可以访问外部的变量
//NSLog(@“x=%d”, x);
//默认情况下,block内部不能修改外面的局部变量  x = 20;
//给局部变量加上__block关键字,这个局部变量就可以在block内不修改
y = 25;
};
block();
return 0;
}

0 个回复

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