block 和 weak
2024-08-26 20:25:20
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。
最新文章
- java基础-泛型3
- MVC应用程序的生命周期图
- HTTP协议与HTTPS协议区别
- Android-判断当前网络是否可用
- ZOJ 3898 - Stean 积分
- Nodejs随笔(三):全局对象之process
- 测试通用的InsertOrUpdate
- gulp 打包合并
- jsp内置对象-config对象
- javaScript--animate函数
- Java学习笔记(二十三):final关键字
- python模块中sys.argv[]使用
- linux 下的emoji在MariaDB中的字符集修改
- asp.net excel模板下载
- 三分钟分布式CAP理论
- maven最全教程
- Java 社区论坛 - Sym 1.5.0 发布
- 游戏1:HTML5制作网页游戏围住神经猫--createjs
- Centos配置网卡子接口
- dist\_wepylogs.js
热门文章
- 开发板编译./camera显示-/bin/sh: ./camera: not found解决方案
- mysql数据库建表分类字段--尽量少用字符串--原因探索
- SpringMvc返回JSON出现"$.result.currentLevel"
- C/C++指针函数和函数指针
- Java中使用 foreach 操作数组
- 小白学python-day05-作业(购物车程序)
- Java emoji持久化mysql
- 0728 history
- 任何类型的数据都向String转型
- Flume+Kafka收集Docker容器内分布式日志应用实践