__unsafe_unretained的使用
__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的使用相关推荐
- __strong、__weak 与 __unsafe_unretained区别
__strong 在arc环境中默认行为,对对象进行retain. 举例 #import <Foundation/Foundation.h>int main(int argc, const ...
- 理解__unsafe_unretained
概述: 这里假设你已经熟悉__strong和__weak,如果不懂就不用继续往下看了. __unsafe_unretained:和__weak 一样,唯一的区别便是,对象即使被销毁,指针也不会自动置空 ...
- nonatomic, retain,weak,strong用法详解
strong weak strong与weak是由ARC新引入的对象变量属性 ARC引入了新的对象的新生命周期限定,即零弱引用.如果零弱引用指向的对象被deallocated的话,零弱引用的对象会被自 ...
- oc 协议 回调 静态成员_OC底层原理探究:Category、关联对象和block本质
1.分类Category的使用 // 给MJPerson类添加分类 @interface MJPerson : NSObject - (void)run; @end@implementation MJ ...
- iOS开发业界毒瘤 Hook
原文地址 为什么有这篇博文 不知道何时开始iOS面试开始流行起来询问什么是 Runtime,于是 iOSer 一听 Runtime 总是就提起 MethodSwizzling,开口闭口就是黑科技.但其 ...
- iOS 进阶—— iOS内存管理
1 似乎每个人在学习 iOS 过程中都考虑过的问题 alloc retain release delloc 做了什么? autoreleasepool 是怎样实现的? __unsafe_unretai ...
- 初窥runtime的作用
运用到runtime需要导入相应的头文件 #import <objc/runtime.h> 1.获取私有成员变量名 unsigned int count;//需要导入头文件:你要导出的私有 ...
- block(六)循环引用-b
在ARC与非ARC环境下对block使用不当都会引起循环引用问题,一般表现为,某个类将block作为自己的属性变量,然后该类在block的方法体里面又使用了该类本身,简单说就是self.theBloc ...
- ios5 ARC机制介绍和使用
参考http://www.yifeiyang.net/development-of-the-iphone-simply-1/ http://blog.csdn.net/diyagoanyhacker/ ...
最新文章
- csdn获取自己所有博客的地址,包含分页
- 高仿腾讯QQ Xplan(X计划)的H5页面(2):动画控制
- (GIT)代码分支管理策略
- C++和操作系统面试问题分类
- Apache Beam欲通过uber api获取大数据
- sketch软件_Sketch软件怎么用?怎么提升Sketch软件技巧?
- spring定时器突然不执行了_非标自动化设备之PLC定时器的时间和程序扫描周期
- 使用equals判断对象是否相等出现的错误
- CVPR | 历届CVPR最佳论文收录集锦
- springboot 文件上传 设置文件大小配置
- linux运行tomcat常见问题,linux – tomcat运行,但是8080端口没有响应
- html鼠标悬停边框颜色,鼠标悬浮在输入框改变边框颜色或背景色代码
- 【机器学习基石】感知机模型+PLA(二)
- java反编译数组_JavaGuide/JAD反编译tricks.md at master · Github-Programer/JavaGuide · GitHub...
- word2vec查询中文词向量同义词
- 基于C语言设计的无边框背景透明窗体
- 《人月神话》(The Mythical Man-Month)看清问题的本质:如果我们想解决问题,就必须试图先去理解它...
- composer安装fxp/composer-asset-plugin包报错问题解决方案
- 机器学习笔记1-What is Machine Learning
- 2020快手前端暑期实习面经
热门文章
- feign.RetryableException: Read timed out executing GET http://*****
- 地级市行政区域划代码
- 信息与计算机工程学院英文翻译,成都信息工程学院通信工程学院英文翻译.doc...
- 作为产品助理的这一年
- 如何布局您的PC站和移动站,并表达两者之间内容的对应关系
- android10动态显示隐藏导航栏,状态栏
- 数据可视化大屏应急管理综合指挥调度系统完整案例详解(PHP-API、Echarts、百度地图)
- 【turtle系列一】所有函数对应的含义和理解
- 【联邦学习】联邦学习
- 在未来,云计算虚拟化的发展趋势是什么?