block知识点

1、block引用局部变量的时候,该变量会作为常量编码到block中,在block中不能被修改。

2、使用 __block修饰的局部变量,不会作为常量被编码到block中,故而在block中可以被修改。

3、在block中引用一个局部的Objective-C对象的时候,该对象会被retain。

4、如果不想局部变量对象在block中被retain,应该使用 __block来修饰相应的局部变量。

5、在block中引用一个实例对象(假设A)的一个实例变量(假设 b),该实例对象(也就是A)会被retain。

6、block本身可以像对象一样copy和release。

  copy方法:a、[_block copy]  b、Block_copy(_block)

  release方法:a、[_block release]  b、Block_release(_block)

7、block创建后,内存是分配在栈上的,调用copy方法,会讲block从栈移动到堆上。

8、当block声明为全局变量的时候,我们应该调用block的copy方法。

原文地址:https://www.cnblogs.com/benbenzhu/p/3759594.html