内存管理:谁创建,谁释放,谁引用,谁管理。
加号方法的实质:减号方法创建对象,然后掉用一个autorelease,把这个创建的对象的内存交给系统管理。
局部变量内存在不用的时候进行释放,全局变量在dealloc方法中对他进行释放。对象被释放掉后会调用dealloc方法。
1.局部变量的内存管理:不用的时候对它进行释放。
2.全局变量内存管理:dealloc方法里面进行释放。
3.由加号方法创建的对象不用对它进行内存管理。
4.加号方法的实质是:减号方法创建然后调用auto release方法把这个对象交给系统管理。
5.retain:对象类型的用它来修饰并且会使引用计数加一,assign:非对象类型的用它来修饰,copy:用来修饰字符串的,也会使引用计数加一。
assign
:普通赋值,一般常用于基本数据类型,常见委托设计模式, 以此来防止循环引用。(我们称之为弱引用).retain
:保留计数,获得到了对象的所有权,引用计数在原有基础上加1.copy
:一般认为,是在内存中重新开辟了一个新的内存空间,用来 存储新的对象,和原来的对象是两个不同的地址,引用计数分别为1。但是当copy
对象为不可变对象时,那么copy
的作用相当于retain
。因为,这样可以节约内存空间
-(void)setPeople:(people *)p
{
if(_p !=p)
{
[_p release];
_p = [p retain];
}
}
6.属性内存管理:在dealloc方法里面进行self.xx = nil;
7.添加到数组里面会使引用计数增加,push,模态弹出,addsubView,都会使引用计数增加的。
8.定时器,在界面消失的时候将定时器废除。
9.通知,注册一个通知的话要进行移除在dealloc方法里面进行移除。
文章有部分内容摘录自 https://juejin.im/entry/57cc1a68165abd0068efa563