OC的内存管理

        内存管理不是一个简单的问题,IOS平台的开发者,多数都为内存问题而苦恼。内存莫名的持续增长,程序莫名的crash,难以发现的内存泄露,这些都是IOS平台内存相关的常见问题。

        内存管理是程序设计中常用的资源管理的一部分。每个计算机系统可供程序使用的资源都是有限的,这些资源包括内存、打开文件数量以及网络连接等。

        IOS系统为每个程序分配30MB的内存,超过20MB会收到内存警告,如果超过30MB,系统将会终止你的应用程序,也就是闪退。

 IOS内存管理的原理是——引用计数。

1、每一个对象都有一个引用计数;

2、对象被创建的时候,引用计数的值为1;

3、当引用计数值为0的时候,对象被系统销毁。

获得内存所有权的方法:

1)、alloc:为新对象分配内存,引用计数置1.

2)、retain:使对象的引用计数+1,并获得对象的所有权。

3)、copy:制造原有对象的副本,该副本的引用计数为1,调用拥有该副本的所有权,并在赋值前释放原有对象,然后再进行赋值。

放弃所有权的方法:

1)、release:使对象的引用计数在未来某个时候减1,并且在那个时候放弃对象的所有权。

2)、autorelease:使对象的引用计数在未来某个时候减1,并且在那个时候放弃对象的所有权,而当前引用计数并没有变。

内存管理原则:

1、对你拥有的对象负责。你只能释放你拥有的对象。

2、凡是你通过retain,alloc,copy等手段获得了所有权的对象,都必须在你不再使用它的时候,由你来调用release,autorelease等手段来释放对它的所有权。

3、在一定的代码段内,对同一对象所做的copy,alloc和retain的操作次数应当与release和autorelease的操作次数相等。

4、可以在类的dealloc方法中释放你所占用的实例变量;

5、对于便利构造器和访问器无需进行内存管理;

6、autorelease意味着延迟了一条release消息,当前引用计数没有变。

Xcode4.2及以上版本有了自动管理内存,及ARC机制,在缺省工程模板中,可以指定工程是否支持ARC,若不指定ARC,在代码中必须使用管理内存的代码来管理内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值