【iOS之Block笔记】
1、Block如果定义在函数中,则生成在栈上,当离开作用域后,block就被释放。如果定义在全局,则生成在全局空间。全局空间block永不释放。对于下图代码,block的调用会失败。
2、如果一个Block没有引用外部变量则可以安全的直接用“=”传递指针,以供后续运行。
3、Block是个结构体,包含code的地址和变量存储的地址,code是个函数,编译后永远存在,地址不变,但存储数据的地址是可变的,即Block对象本身的地址是可变的。
4、所以,如果在需要保留1个block以供以后使用,需要使用copy把block的亦是拷贝到堆上。使用完后,使用release再释放掉。
5、Block内部结构: