1. block不是Object对象,所以对retain无效,要想保留block生命周期,最好通过copy来实现,当然copy后,要记得release。

2.一般被block的应用的对象,retainCount会自动加1,为了解决这种 retain的内存问题,可以在对象前加__block,如果不加会导致内存泄漏,导致程序直接崩溃。加了block块就不会维护这个对象了。

对临时变量的引用:

__block Object obj = [[[Object alloc] init] withBlock:^{

[obj blockRetain];

[obj release];

}]; 这样Object的dealloc方法就会调用。

对实例变量的引用:

Object obj =[[[Object alloc] init] withBlock:^{

[self blockRetain];

}];

这样即使调用的self自身类的release方法,只要这个block没有执行完,self也不会释放。可采用如下做法

__block typeof (self) bself = self; 即通过表达式引用,指明 bself 是self类型。

Object obj =[[[Object alloc] init] withBlock:^{

[bself blockRetain];

}];

这样块和self相互独立了。

最新文章

  1. Bootstrap_进度条
  2. .NET分布式事务--TransactionScop
  3. make_pair
  4. 【linux磁盘分区--格式化】fdisk,parted,mkfs.ext3
  5. River Hopscotch(二分)
  6. Blogger支持Mobile行动版网页 - Blog透视镜
  7. 【转载】Session的生命周期
  8. js创建数组
  9. Flutter的初体验--初次配置的问题
  10. java的线程
  11. 从字节码层面看“HelloWorld”
  12. IntelliJ Idea 跳出括号并且光标移到末尾的快捷键
  13. QCon技术干货:个推基于Docker和Kubernetes的微服务实践
  14. C++之可调用对象
  15. 微信小程序提示框
  16. C Primer Plus学习笔记(十三)- 结构和其他数据形式
  17. MFC 控件使用汇总
  18. 深度剖析MQTT协议的整个通信流程
  19. C#IList 取区间数据
  20. JAVA加解密 -- 数字签名算法

热门文章

  1. JS中的onload与jQuery中的ready差别
  2. iOS定制改动navigation的backbutton
  3. 时间格式化函数strftime
  4. RvmTranslator6.0 - Dassault Systemes 3DXML
  5. java一个月日历
  6. uva103 - Stacking Boxes(DAG)
  7. jquery06 jQuery.extend 给jQuery函数添加、继承 静态方法
  8. amaze ui响应式表格
  9. assert增强宏的实现
  10. 分享一段css代码学到的js知识