Block相关面试点详解
2018-07-30 本文已影响0人
彭小先生
block的原理是怎样的?本质是什么?
![](https://img.haomeiwen.com/i3014185/51bb9ddb4371675c.png)
![](https://img.haomeiwen.com/i3014185/063780582dab7b31.png)
![](https://img.haomeiwen.com/i3014185/79c496f65dac40b8.png)
auto:代表自动变量,离开作用域就销毁
static:将变量的地址传到block
block类型
block分为三种类型。global类型不需要太过注意,需要注意stack类型转换为malloc类型。只有block在堆上时我们才可以对其进行管理。
![](https://img.haomeiwen.com/i3014185/bf4b3f74797a8e23.png)
![](https://img.haomeiwen.com/i3014185/fd02ef457a87cd0d.png)
![](https://img.haomeiwen.com/i3014185/21561117de6ccb5d.png)
![](https://img.haomeiwen.com/i3014185/890c77dcfbfd12fb.png)
![](https://img.haomeiwen.com/i3014185/faea5897d3d52f71.png)
封装了函数调用以及调用环境的OC对象
__blcok的作用是什么?有什么使用注意点?
![](https://img.haomeiwen.com/i3014185/d19dd6457e1fb852.png)
![](https://img.haomeiwen.com/i3014185/fa5831c1012e150e.png)
![](https://img.haomeiwen.com/i3014185/7e9dd848c2812b69.png)
block的属性修饰词为什么是copy?使用block有哪些使用注意?
如果不copy的话,那么block就不会在堆空间上,无法对你生命周期进行控制。需要注意循环引用(ARC环境下 strong 、copy没有区别)
block在修改NSMutableArray内容时,需不需要添加__blcok?
不需要。修改内容也是对数组的使用,只有对对象赋值的时候才需要__block。