Block使用总结

  1. Block和函数很像,具有如下特性:
  • 可以保存代码
  • 有返回值
  • 有形参
  • 调用方式一样
  1. 使用的形式举例:
    1)带参数的形参
int (^heblock)(int,int) = ^(int a, int b){
     return a + b;
};

2)不带形参的block,如果没有形参可以省略后面的小括号

void (^myblock)() = ^{
      NSLog(@“我的BLOCK”);
};

3)利用typedef定义block类型

typedef int (^myblock)(int, int);
myblcok he = ^(int a, int b){
  return a + b;
};
int c = he(19,9); // 将19和9的和赋值给c;
  1. block访问外面的变量
  • block内部可以访问外面的变量
  • 默认情况下block不能修改外面的局部变量
  • 给局部变量加上_block关键字,这个局部变量就可以在block内部修改
    如: int a = 11; _block int b = 12;
    上面的两个变量a和b只有b能够在block中被修改!
  1. 在ARC情况下:(用__weak / 下面的方式修饰)
// 在HHLoginViewController.h定义一个完成block
@property (nonatomic, copy) void(^dosomeComplish)();
HHLoginViewController *loginVC = [[HHLoginViewController alloc] init];
        //使用__weak避免循环引用
        __weak typeof(self) weakSelf = self;
        loginVC.dosomeComplish = ^{
            [weakSelf dosome];
        };
  1. 在MRC即非ARC情况下:只能用__block
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容