内存管理

内存管理:

用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 据实际情况而定 哪一方强引用,哪一方弱引用

自动释放池:

原文地址:https://www.cnblogs.com/kinghyt/p/11265361.html