当前位置:网站首页>【引用计数器及学习MRC的理由 Objective-C语言】
【引用计数器及学习MRC的理由 Objective-C语言】
2022-08-10 01:01:00 【清风清晨】
前言
对象应该什么时候被回收?
当有人使用这个对象的时候,这个对象就千万不能回收。
只有在没有任何人使用这个对象的时候,才可以回收。
一、我怎么知道这个对象,它到底有没有人在用呢?引用计数器
1)每一个对象都有一个属性,叫做retainCount,引用计数器,类型是unsigned long,占据8个字节。
引用计数器的作用:用来记录当前这个对象,有多少个人正在使用它。
默认情况下,创建1个对象出来,这个对象的引用计数器的默认值是1.
2)当多1个人使用这个对象的时候,应该先让这个对象的引用计数器的值+1,代表这个对象多1个人使用。
3)当这个对象少1个人使用的时候,应该先让这个对象的引用计数器的值-1,代表这个对象少1个人使用。
4)当这个对象的引用计数器变为0的时候,代表这个对象无人使用。这个时候,我们的系统就会自动回收这个对象。
二、如何去操作这个引用计数器呢?
1.为对象发送1条retain消息,对象的引用计数器就会加1
1)为对象发送1条retain消息,对象的引用计数器就会加1,当多1个人使用对象的时候才发
2)为对象发送1条release消息,对象的引用计数器就会减1,当少1个人使用对象的时候才发
3)那我想看看这个引用计数器是多少,怎么办呢,为对象发送1条retainCount消息,就可以取到对象的引用计数器的值
4)就这样++ – 当对象的引用计数器变为0的时候,对象就会被系统立即回收。
5)在对象被回收的时候,会自动调用对象的dealloc方法。
2.内存管理的分类
管理内存中的OC对象,其实有两种方式:
1)第一种内存管理方式,叫做:MRC:
Manual Reference Counting
手动 引用 计数
也叫手动内存管理,
这种管理方式是什么意思:
当多1个人使用对象的时候,要求程序员手动的发送retain消息,
当少1个人使用对象的时候,要求程序员手动的发送release消息。
2)第二种内存管理方式:叫做:ARC
Automatic Reference Counting
自动 引用 计数
也叫自动内存管理。
这种管理方式是什么意思:
当多1个人使用对象的时候,系统自动帮你发送1条retain消息,
当少1个人使用对象的时候,系统自动帮你发送1条release消息。
3)我们今天学习MRC
学习MRC的理由:
1)面试必考,100%
2)在2011年之前,iOS5之前,实际上只有MRC的,没有ARC的,早期的APP,开发使用的是MRC技术,你去找工作的话,基本上99%都是人家已经写好了APP,你去了负责改,负责增加功能,如果MRC你不懂的话,你改的了吗?
3)iOS大牛都是从MRC成长起来的,他们之前都是用MRC来开发的,到现在1些固执的MRC大牛,仍然喜欢用MRC,因为MRC更精确1些啊,MRC可以做到:我想要这个对象什么时候释放,它就什么时候释放。以后工作的时候,方便交流,你不懂的话,插不上嘴。
4)ARC是基于MRC的。如果你想搞懂ARC底层内部的原理,它都是MRC的。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
边栏推荐
- 20220809-PotPlayer如何设置默认字体色-设置默认字体色的方法
- 使用 GoogleTest 框架对 C 代码进行单元测试
- Shader Graph learns various special effects cases
- -Chess game-
- Initial attempt at UI traversal
- Pyscript,创建一个能执行crud操作的网页应用
- In the 2022 gold, nine, silver and ten work tide, how can I successfully change jobs and get a high salary?
- 高校就业管理系统设计与实现
- 微信小程序tab切换时保存checkbox状态
- oracle的数据导入导出
猜你喜欢
MySQL最大连接数限制如何修改
Unity vertex animation
Pagoda measurement - building LightPicture open source map bed system
Unity editor extension interface uses List
unity 报错 Unsafe code may only appear if compiling with /unsafe. Enable “Allow ‘unsafe‘ code“ in Pla
高并发+海量数据下如何实现系统解耦?【下】
[论文阅读] Multimodal Unsupervised Image-to-Image Translation
OOD论文:Revisit Overconfidence for OOD Detection
芯片资讯|半导体收入增长预计将放缓至 7%,蓝牙芯片需求依然稳步增长
FILE结构体在stdio.h头文件源码里的详细代码
随机推荐
In the 2022 gold, nine, silver and ten work tide, how can I successfully change jobs and get a high salary?
彩色袜子题
【报错】ModuleNotFoundError: No module named ‘paramiko‘
【Grpc】简介
浏览器中location详解
-Pickling peanuts-
DP 优化方法合集
Solidity最强对手:MOVE语言及新公链崛起
el-input保留一位小数点
将string类对象中的内容格式化到字符串Buffer中时遇到的异常崩溃分析
Not, even the volume of the king to write code in the company are copying and pasting it reasonable?
这一次,话筒给你:向自由软件之父 Richard M. Stallman 提问啦!
【LeetCode】求根节点到叶节点数字之和
【wpf】拖拽的简单实现
FILE结构体在stdio.h头文件源码里的详细代码
Summary of basic operations of c language files
改变社交与工作状态的即时通讯是什么呢?
GB28181 sip和RTSP(Real-Time Streaming Protocol)实时流控制协议
Unity顶点动画
初步认识对象