• block下循环引用的问题

    • __block本身并不能避免循环引用,避免循环引用需要在block内部把__block修饰的obj置为nil
    • __weak可以避免循环引用,但是其会导致外部对象释放了之后,block 内部也访问不到这个对象的问题,我们可以通过在 block 内部声明一个 __strong
      的变量来指向 weakObj,使外部对象既能在 block 内部保持住,又能避免循环引用的问题
  • __block与__weak功能上的区别。

    • __block会持有该对象,即使超出了该对象的作用域,该对象还是会存在的,直到block对象从堆上销毁;而__weak仅仅是将该对象赋值给weak对象,当该对象销毁时,weak对象将指向nil;
    • __block可以让block修改局部变量,而__weak不能。

另外,MRC中__block是不会引起retain;但在ARC中__block则会引起retain。所以ARC中应该使用__weak。

最新文章

  1. java基础-泛型3
  2. MVC应用程序的生命周期图
  3. HTTP协议与HTTPS协议区别
  4. Android-判断当前网络是否可用
  5. ZOJ 3898 - Stean 积分
  6. Nodejs随笔(三):全局对象之process
  7. 测试通用的InsertOrUpdate
  8. gulp 打包合并
  9. jsp内置对象-config对象
  10. javaScript--animate函数
  11. Java学习笔记(二十三):final关键字
  12. python模块中sys.argv[]使用
  13. linux 下的emoji在MariaDB中的字符集修改
  14. asp.net excel模板下载
  15. 三分钟分布式CAP理论
  16. maven最全教程
  17. Java 社区论坛 - Sym 1.5.0 发布
  18. 游戏1:HTML5制作网页游戏围住神经猫--createjs
  19. Centos配置网卡子接口
  20. dist\_wepylogs.js

热门文章

  1. 开发板编译./camera显示-/bin/sh: ./camera: not found解决方案
  2. mysql数据库建表分类字段--尽量少用字符串--原因探索
  3. SpringMvc返回JSON出现"$.result.currentLevel"
  4. C/C++指针函数和函数指针
  5. Java中使用 foreach 操作数组
  6. 小白学python-day05-作业(购物车程序)
  7. Java emoji持久化mysql
  8. 0728 history
  9. 任何类型的数据都向String转型
  10. Flume+Kafka收集Docker容器内分布式日志应用实践