什么是Block

BLOCK是什么?

苹果推荐的类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行。

  • BOLCK和函数的相似性:

  • 可以保存代码

  • 有返回值

  • 有形参

  • 调用方式一样。

  • block类型:void(^)()

  • Block存储

Block默认存储在栈中,访问了外界的对象,不会对对象retain;如果对block进行一次copy,block就会存储在堆中,访问了外界的对象,会对对象进行retain操作。

Block的定义
  • 注意:
  • 如果block中没有使用外部变量,默认就是全局
  • 如果block中使用了外部变量,就是堆
  • Block可以访问局部变量,但是不能修改。
  • ARC中,默认局部变量是强引用

Block的格式

Snip20160107_17.png

Block定义在函数或方法内

int (^MyDear)(int, int) = ^(int a, int
b) {
return a+b;
};
```
定义了一个叫MyDear的blocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现。

######block循环引用问题

- block尽量少使用self
- block尽量少使用下划线(_)直接访问成员属性
- 要避免强引用到self的话,用__weak把self重新引用一下就行
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容