__unsafe_unretained的使用

我们一般很少用到__unsafe_unretained修饰词。但是在开源项目就会见到。

在介绍这个__unsafe_unretained之前,我们先来介绍下__weak。
__weak 表示的是对象的弱引用关系,__weak修饰的对象被释放后,指向对象的指针会自动置为空,也就是指向nil。
__unsafe_unretained表示的是弱引用关系,__unsafe_unretained修饰的对象被释放后,指针不会置为空,变成一个野指针,如果后续再访问这个对象就会crash。

那为什么有__weak还要用__unsafe_unretained呢?

使用__weak会消耗一定的性能,因为在用__weak修饰的对象是否被释放,在检查的时候需要一些信息。它相对应的有一个weak表。这个时候需要查找并置为nil。

而__unsafe_unretained不需要这么做。

什么时候用__unsafe_unretained?

例如:当对象A拥有对象B,A销毁B野销毁。这样点那个B存在,A也一定存在的时候,此时B要调用A的接口,就可以通过__unsafe_unretained 保持对A的引用关系。

__unsafe_unretained的使用相关推荐

  1. __strong、__weak 与 __unsafe_unretained区别

    __strong 在arc环境中默认行为,对对象进行retain. 举例 #import <Foundation/Foundation.h>int main(int argc, const ...

  2. 理解__unsafe_unretained

    概述: 这里假设你已经熟悉__strong和__weak,如果不懂就不用继续往下看了. __unsafe_unretained:和__weak 一样,唯一的区别便是,对象即使被销毁,指针也不会自动置空 ...

  3. nonatomic, retain,weak,strong用法详解

    strong weak strong与weak是由ARC新引入的对象变量属性 ARC引入了新的对象的新生命周期限定,即零弱引用.如果零弱引用指向的对象被deallocated的话,零弱引用的对象会被自 ...

  4. oc 协议 回调 静态成员_OC底层原理探究:Category、关联对象和block本质

    1.分类Category的使用 // 给MJPerson类添加分类 @interface MJPerson : NSObject - (void)run; @end@implementation MJ ...

  5. iOS开发业界毒瘤 Hook

    原文地址 为什么有这篇博文 不知道何时开始iOS面试开始流行起来询问什么是 Runtime,于是 iOSer 一听 Runtime 总是就提起 MethodSwizzling,开口闭口就是黑科技.但其 ...

  6. iOS 进阶—— iOS内存管理

    1 似乎每个人在学习 iOS 过程中都考虑过的问题 alloc retain release delloc 做了什么? autoreleasepool 是怎样实现的? __unsafe_unretai ...

  7. 初窥runtime的作用

    运用到runtime需要导入相应的头文件 #import <objc/runtime.h> 1.获取私有成员变量名 unsigned int count;//需要导入头文件:你要导出的私有 ...

  8. block(六)循环引用-b

    在ARC与非ARC环境下对block使用不当都会引起循环引用问题,一般表现为,某个类将block作为自己的属性变量,然后该类在block的方法体里面又使用了该类本身,简单说就是self.theBloc ...

  9. ios5 ARC机制介绍和使用

    参考http://www.yifeiyang.net/development-of-the-iphone-simply-1/ http://blog.csdn.net/diyagoanyhacker/ ...

最新文章

  1. csdn获取自己所有博客的地址,包含分页
  2. 高仿腾讯QQ Xplan(X计划)的H5页面(2):动画控制
  3. (GIT)代码分支管理策略
  4. C++和操作系统面试问题分类
  5. Apache Beam欲通过uber api获取大数据
  6. sketch软件_Sketch软件怎么用?怎么提升Sketch软件技巧?
  7. spring定时器突然不执行了_非标自动化设备之PLC定时器的时间和程序扫描周期
  8. 使用equals判断对象是否相等出现的错误
  9. CVPR | 历届CVPR最佳论文收录集锦
  10. springboot 文件上传 设置文件大小配置
  11. linux运行tomcat常见问题,linux – tomcat运行,但是8080端口没有响应
  12. html鼠标悬停边框颜色,鼠标悬浮在输入框改变边框颜色或背景色代码
  13. 【机器学习基石】感知机模型+PLA(二)
  14. java反编译数组_JavaGuide/JAD反编译tricks.md at master · Github-Programer/JavaGuide · GitHub...
  15. word2vec查询中文词向量同义词
  16. 基于C语言设计的无边框背景透明窗体
  17. 《人月神话》(The Mythical Man-Month)看清问题的本质:如果我们想解决问题,就必须试图先去理解它...
  18. composer安装fxp/composer-asset-plugin包报错问题解决方案
  19. 机器学习笔记1-What is Machine Learning
  20. 2020快手前端暑期实习面经

热门文章

  1. feign.RetryableException: Read timed out executing GET http://*****
  2. 地级市行政区域划代码
  3. 信息与计算机工程学院英文翻译,成都信息工程学院通信工程学院英文翻译.doc...
  4. 作为产品助理的这一年
  5. 如何布局您的PC站和移动站,并表达两者之间内容的对应关系
  6. android10动态显示隐藏导航栏,状态栏
  7. 数据可视化大屏应急管理综合指挥调度系统完整案例详解(PHP-API、Echarts、百度地图)
  8. 【turtle系列一】所有函数对应的含义和理解
  9. 【联邦学习】联邦学习
  10. 在未来,云计算虚拟化的发展趋势是什么?