IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【iOS开发】——引用计数的简单了解 -> 正文阅读

[移动开发]【iOS开发】——引用计数的简单了解

在学iOS属性的特性的时候,内存管理方面的“四大天王”让我不得不去了解一下引用计数。

参考文章

IOS引用计数也许并不是你想的那样

iOS开发—内存管理与引用计数

iOS 引用计数

刚开始查阅的时候,发现有博客说:

观点一:引用计数就是有几个指向同一个地址的指针。

观点二:不要把IOS里的引用计数理解成了有几个指针指向对象,引用计数就是几。

先把appDelegate的ARC关闭。
在appDelegate.m上输入以下代码:
请添加图片描述

当创建一个对象时,无论是用[*** new]还是 [[*** alloc ] init];它的引用计数都是1,这个引用计数是存放在所创建对象的头部一个节点内的。从上面代码发现无论有几个指针指向这个对象,这个对象的引用计数始终为一,而且还有一点,就是所有的指针的引用计数和这个对象是一样的,所以这里就要明白一点:引用计数是内存块的属性,并不是指针的,所 以,指向同一块内存的指针的引用计数在同一时刻永远都该是一样的。

接下来在看一组代码:
请添加图片描述

这次我们将 NSObject* ob2 = ob; 改为了 NSObject* ob2 = [ob retain];,为什么结果发生了变化呢?这就得从retain的作用说起了。

retain方法的作用是 ob指针指向的内存块发消息说:喂,老兄,你的引用计数要加1啊,于是,内存块的引用计数就加了1。正因为ob1没有retain的过程,所以不会影响想其引用计数。retain能取得非自己生成并持有的对象,通过retain方法,非自己生成的对象跟用alloc方法生成并持有的对象一样,所以就会使ob的引用计数加1。

这是引用计数加1的情况,那什么情况下会使引用计数减1呢?

废话不多说,上代码。请添加图片描述

因为上面说的引用计数和指针没有关系,所以就打印一个的对象的引用计数就可以了。使用release就可以使这个对象的引用计数减1,直至减为0,当减为0时,存放这个对象的内存快不在存在,也就是系统将在这个内存块上的对象清除了。

所以在开始时我们提出的两个观点中显然观点二是正确的。千万要把IOS里的引用计数理解成了有几个指针指向对象,引用计数就是几。

补充:为什么要release?
防止野指针,所以要及时的将指针置空。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-07 12:12:20  更:2021-08-07 12:13:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 14:45:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码