内存管理:
用new或者alloc创建的对象就是自己创建的
ARC:自动管理
MRR:手动管理 reference counting
将所创建的工程改为MRR环境
两种内存管理的常见问题:
1.释放或者重写了正在使用的数据(对象)->程序奔溃
2.没有释放不需要的对象->内存泄露
内存管理的核心:对象的拥有权
拥有权在实际操作中的体验:
1.某个代码块对其创建的对象有拥有权
2.某个类的属性变量 该类的对象对其属性有拥有权
只要这个对象有一个拥有者,那么这个对象就会一直存在,一旦它没有拥有者(即引用计数为1)时,那么系统会自动销毁。
对象的拥有权:
1.凡是通过new、alloc、copy、mutableCopy创建的对象都有拥有权 反之没有
2.不是自己创建的对象可以使用retain来获得拥有权 对属性的申明可以使用strong或者retain
当然 申明拥有权之后也需要自己释放
3.当某一个对象不再使用时,需要使用release或者autorelease释放
4.对于属性变量 要重写父类的dealloc方法释放对象对其的拥有权
对于属性变量的赋值,尽量使用self. 因为set方法中有内存管理在里面:释放、申明拥有权。
循环引用问题:
解决方法:一方强引用,一方弱引用。weak 据实际情况而定 哪一方强引用,哪一方弱引用
自动释放池: