##Memory Management (内存管理)

本文介绍了内存管理的重要性,探讨了C和C++的内存管理方式,重点讲述了Objective-C中的MRC(手动引用计数)和ARC(自动引用计数)机制。Objective-C通过retaincount来跟踪对象的所有权,当retaincount为0时,对象会被销毁。在MRC中,程序员需要手动管理retain和release,而在ARC中,这些操作由编译器自动完成。文章还强调了内存管理的基本规则,如创建对象即拥有,释放非自己创建的对象等,并提到了避免循环引用的重要性,特别是在delegate中使用weak属性来防止循环引用。
摘要由CSDN通过智能技术生成

Memory Management (内存管理)

首先要知道为什么要进行内存管理?

资源最大化利用,众所周知,不管是计算机还是移动设备单片机等的内存都是有限的,如何在有限的内存空间运行更多更大的程序就是每一个内存管理系统所要考虑的问题,通过控制所有对象的生命周期,从而减少内存的占用,让程序之后不使用的对象释放自己的内存空间

怎么判断这个对象在以后的程序中不会使用了呢?

C 和 C++有严格的申请内存和释放部分,需要人为处理,有些高级的现代语言增加了 gc(garbage collection)机制去帮助开发者管理内存,当然 gc 自身程序也是消耗内存的,会在运行期间监控对象,典型的就是 java语言.
那么,我们所要讨论的的 objc 就是使用了一个叫做 retaincount(引用基数)的东东,来确定对象是否被某个对象拥有,以便确定对象是否在未来会被使用..当 retaincount 为0 时,表示对象已经完成使命,由系统自动执行 dealloc销毁…

在 xcode 4.2之前 ,都是 mrc,手动管理retaincount..以便精确控制对象的生命周期,之后就有了 arc ,在编译期间通过xcode 自动代码注入

参考
the difference between gc and arc
gc 比引用计数高明多,也占内存多,会自动破坏循环引用,而不会出现内存泄露问题(难道这也是 ios比安卓快的一个原因?哈哈)

基本的内存管理规则

The memory management model is based on object ownership. Any object may have one or more owners. As long as an object has at least one owner, it continues to exist. If an object has no owners, the runtime system destroys it automatically. <

任何对象都有拥有者,只要一个对象有至少一个拥有者,它就回一直存在(也就是只要引用计数大于1),如果没有拥有者,运行时系统就回执行对象的 dealloc 方法,销毁它

我们在使用的时候一定要拥有几个基本规则

  • You own any object you create
    You create

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值