Tekkaman

导航

 

iOS之Block笔记

  1、Block如果定义在函数中,则生成在栈上,当离开作用域后,block就被释放。如果定义在全局,则生成在全局空间。全局空间block永不释放。对于下图代码,block的调用会失败。

  

  2、如果一个Block没有引用外部变量则可以安全的直接用“=”传递指针,以供后续运行。

  3、Block是个结构体,包含code的地址和变量存储的地址,code是个函数,编译后永远存在,地址不变,但存储数据的地址是可变的,即Block对象本身的地址是可变的。

  4、所以,如果在需要保留1个block以供以后使用,需要使用copy把block的亦是拷贝到堆上。使用完后,使用release再释放掉。

  5、Block内部结构:

  

posted on 2012-10-27 18:54  Tekkaman  阅读(302)  评论(0编辑  收藏  举报