block的基础知识总结

2016-06-09  本文已影响37人  钎探穗

block的内存管理:

1.当block里面会有b类相关的参数要回调回去的时候,属性用copy修饰,将其拷贝到堆里面,这样即便栈释放掉了,b类的指针也在堆中存在,能够成功的回调回去。
2.如果语法块仅仅是执行而不再回调回去了, 比如操作某个数据库,修改某个单利类的属性,发送某个通知之类的,则可以用weak来修饰。

注意:这里不都用copy,原因是优化内存。 如果这个类要传入1000Block来执行,而这个类又不会马上释放掉的话,用copy是不是就拷贝了1000个在堆里面? 这样就会占用很大一部分内存,如果使用了weak将不必要的执行后就可以马上释放掉是不是就节约了很多的内存了。

** __weak在ARC下修饰,__block在MRC下修饰,防止循环引用.
** __block:第二个作用,
修饰局部变量,MRC和ARC通用.***在block内部不能直接修改局部变量的值, 如果想修改必须声明成__block类型的变量 ***

上一篇下一篇

猜你喜欢

热点阅读