什么是Block

作者: GryllsNSTimer | 来源:发表于2016-01-10 14:37 被阅读196次
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重新引用一下就行

相关文章

  • 2022-04-13 block笔记

    什么是block 什么是block调用 block截获变量 __block修饰符用在什么场景,__block变量_...

  • 2019 iOS面试题-----Block原理、Block变量截

    什么是Block? Block变量截获 Block的几种形式 一、什么是Block? Block是将函数及其执行上...

  • ios底层原理-代码块(block)的本质(一)

    问题 1.什么是block,block的本质是什么?2.block的属性修饰词为什么是copy?使用block有哪...

  • ios底层原理-代码块(block)的本质(二)

    问题 1.什么是block,block的本质是什么?2.block的属性修饰词为什么是copy?使用block有哪...

  • 什么是Block

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

  • 什么是Block

    Block是将函数及其执行上下文封装起来的对象. 接下来我们查看一下Block源码使用clang -rewrite...

  • 5. block

    目录 Block底层解析什么是block?block编译转换结构block实际结构block的类型NSConcre...

  • Block技巧与底层解析

    目录 Block底层解析什么是block?block编译转换结构block实际结构block的类型NSConcre...

  • 深入理解Block

    一.Block概要 什么是Block Block objects are a C-level syntactic ...

  • iOS面试题总结

    什么是Block?Block是将函数及其执行上下文封装起来的对象。 什么是Block调用?Block调用实质上就是...

网友评论

    本文标题:什么是Block

    本文链接:https://www.haomeiwen.com/subject/vecfkttx.html