| |
|
开发:
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里的引用计数理解成了有几个指针指向对象,引用计数就是几。先把appDelegate的ARC关闭。 当创建一个对象时,无论是用[*** new]还是 [[*** alloc ] init];它的引用计数都是1,这个引用计数是存放在所创建对象的头部一个节点内的。从上面代码发现无论有几个指针指向这个对象,这个对象的引用计数始终为一,而且还有一点,就是所有的指针的引用计数和这个对象是一样的,所以这里就要明白一点:引用计数是内存块的属性,并不是指针的,所 以,指向同一块内存的指针的引用计数在同一时刻永远都该是一样的。 接下来在看一组代码: 这次我们将 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 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 | -2025/4/19 10:57:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |