1 什么是内存管理?
内存管理是关于如何管理对象生命周期的编程原则。
OC中的内存管理只针对OC中的对象,所有的对象都继承NSObject
基本数据类型不需要管理内存。
当一个对象没有人再使用,该对象应该从内存中销毁掉。
2 引用计数
所有的OC对象都有一个计数器,这个计数器我们成为引用计数。
引用计数表示有几个人在使用当前对象。
alloc用来创建对象,创建完成后,引用计数为1,只调用一次。
retain使引用计数+1,可以多次调用。
release使引用计数-1,可以调用多次。
当引用计数为0时,对象会被系统从内存中销毁,销毁之前,会自动调用此对象的dealloc方法
3对象所有权
当一个所有者(owner,本身是一个OC对象)做了如下动作,它就拥有了一个对象的所有权(ownership)。
alloc retain copy
使用如下方法,释放对象所有权
release autorelease
4黄金法则
如果一个对象使用了alloc,[nutable]copy retain,那么你必须使用相应的release或者autorelease释放。
5 dealloc 方法
当对象的引用计数为0时,系统调用此对象的dealloc方法
我们应该在dealloc方法中,释放他持有的对象。
调用[super dea
内存管理是关于如何管理对象生命周期的编程原则。
OC中的内存管理只针对OC中的对象,所有的对象都继承NSObject
基本数据类型不需要管理内存。
当一个对象没有人再使用,该对象应该从内存中销毁掉。
2 引用计数
所有的OC对象都有一个计数器,这个计数器我们成为引用计数。
引用计数表示有几个人在使用当前对象。
alloc用来创建对象,创建完成后,引用计数为1,只调用一次。
retain使引用计数+1,可以多次调用。
release使引用计数-1,可以调用多次。
当引用计数为0时,对象会被系统从内存中销毁,销毁之前,会自动调用此对象的dealloc方法
3对象所有权
当一个所有者(owner,本身是一个OC对象)做了如下动作,它就拥有了一个对象的所有权(ownership)。
alloc retain copy
使用如下方法,释放对象所有权
release autorelease
4黄金法则
如果一个对象使用了alloc,[nutable]copy retain,那么你必须使用相应的release或者autorelease释放。
5 dealloc 方法
当对象的引用计数为0时,系统调用此对象的dealloc方法
我们应该在dealloc方法中,释放他持有的对象。
调用[super dea