手工内存管理规则的总结
1.如果需要保持一个对象不被销毁,可以使用retain.在使用完对象后,需要使用release销毁
2.给对象发送release消息并不会销毁对象,只有当这个对象的引用计数减为0时,对象才会被销毁.然后系统会发送dealloc消息给这个对象用于释放它的内存.
对使用了retain或者copy,mutableCopy,alloc或者new方法的任何对象,以及具有retain和copy特性的属性进行释放需要覆盖dealloc方法,使得对象在释放的时候能够释放这些实例变量.
3.在自动释放池被清空时也会自动释放的对象做些事情.系统每次都会在自动释放池被销毁的时候发送release消息给池中的每个对象.如果池中的对象引用计数减为0, 系统会发送dealloc消息销毁这个对象.
4.如果在方法中不再需要这个对象但需要将其返回,可以给这个对象发送autorelease消息用以标记这个对象延迟释放.autorelease消息并不会影响到这个对象的应引用计数.
5.当应用终止时,内存中的对象都会被释放, 不论他们是否都在自动释放池中.
当开发Cocoa或者iOS应用程序时, 随着应用程序的运行自动释放池会被创建和清空(每次的事件都会发生). 在这种情况下如果要使自动释放池被清空后自动释放池的对象还能够存在,对象需要使用retain方法,只要这些对象的引用计数大于发送autorelease消息的数量就能够在池被清理后生存下来.
--摘抄自Objective-C程序设计 第六版
--[美]Stephen G.Kochan著
--林冀 范俊 朱奕欣
转载于:https://www.cnblogs.com/PaulpauL/p/4733253.html
手工内存管理规则的总结相关推荐
- “雪花”项目:Microsoft探索在.NET中实现手工内存管理
来自Microsoft研究院.剑桥大学和普林斯顿大学的一些研究人员构建了一个.NET的分支,实现了在运行时中添加支持手工内存管理的API.研究方法的细节及所获得的性能提升发表在名为"Proj ...
- ObjC学习10-Foundation框架之内存管理
据说ObjC三大难点之一就有内容管理,这项比较有趣的内容终于来临了!Come on~ 1.自动释放池 在处理Foundation程序时,为了使用Foundation对象,必须设置自己的池.系统使用这个 ...
- iOS开发ARC内存管理技术要点
本文来源于我个人的ARC学习笔记,旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇 ...
- iOS开发ARC内存管理
本文的主要内容: ARC的本质 ARC的开启与关闭 ARC的修饰符 ARC与Block ARC与Toll-Free Bridging ARC的本质 ARC是编译器(时)特性,而不是运行时特性,更不是垃 ...
- iOS 下ARC的内存管理机制
本文来源于我个人的ARC学习笔记,旨在通过简明扼要的方式总结出iOS开发中ARC(Automatic Reference Counting,自动引用计数)内存管理技术的要点,所以不会涉及全部细节.这篇 ...
- 内存管理内幕--Jonathan Bartlett (johnnyb@eskimo.com), 技术总监, New Media Worx--
Jonathan Bartlett (johnnyb@eskimo.com), 技术总监, New Media Worx 2004 年 11 月 29 日 本文将对 Linux™ 程序员可以使用的内存 ...
- Objective-C入门解读与内存管理方式
Objective-C入门 Objective-C入门(A First Look at Objective-C) 转自: http://www.fish888.com/Objective-C-t684 ...
- iOS 进阶—— iOS内存管理
1 似乎每个人在学习 iOS 过程中都考虑过的问题 alloc retain release delloc 做了什么? autoreleasepool 是怎样实现的? __unsafe_unretai ...
- Objective-C内存管理知识总结
原帖地址 http://www.cocoachina.com/bbs/read.php?tid-12760.html Objective-C的内存管理机制是比较灵活的,即可以拿来像C/C++一样用, ...
- iOS/OS X内存管理(一):基本概念与原理
iOS/OS X内存管理(一):基本概念与原理 发表于21小时前| 1585次阅读| 来源CSDN| 8 条评论| 作者刘耀柱 移动开发iOSObjective-C内存管理内存泄露局部变量开发经验 a ...
最新文章
- 生活不易,且行且珍惜
- QTexe软件设置系统默认的图标
- Verilog_寻找最高有效位的位置
- 移动端分步注册_移动应用程序的可用性测试:分步指南
- JMeter压测笔记
- Python中利用LSTM模型进行时间序列预测分析
- 基于keepalived实现多种模式的高可用集群网站架构
- python智能工厂_智能工厂关键技术应用 第八讲 智能工厂的Python编程应用
- Java线程局部变量ThreadLocal
- 如何在 Linux 上检查可用磁盘空间 [终端和 GUI]
- AI,大数据,复杂系统最精25本大书单(建议收藏)
- XRD数据分析--如何使用Origin作图?
- ppt如何利用视频作为背景
- 强连通分量入门——Trajan算法
- 开学季征文 | 一位开发实习生的真情流露
- vue axios封装以及API统一管理
- 小米路由器拨号显示无法连接服务器,小米路由器4连不上网(不能上网)怎么办? | 192路由网...
- AWB(Attention WaveBlock)
- CSS表格与浮动定位
- 月薪3000与月薪30000的文案区别