我们在使用 new开辟空间时,用完了的同时也需要把他delete掉,再使用已经被delete掉的空间时,就会变成了不安全的野指针,如果在使用完,却忘记了delete释放掉就会产生内存泄漏,在我们平常练习的时候,一点点的内存泄漏我们可能是不会感觉到影响的,但是一到了大型的程序或者是在服务器上编程的话,如果泄漏的少就会隐藏的很深,也会都不会出现状况的,不然就会很快的程序崩溃,有点跳话题了,接着讲我们的三种配对编程方式。
第一种、 new delete
这个是最常见的,在构造函数中new,然后在析构函数中把他delete掉,这样的一一对应着。
第二种、 retain release
这个主要是应对,new出一个对象,几个都要进行使用,使用就没有关系了,但是谁来delete掉他,变成了一个大的问题,因为你不知道在你这个delete后,其他的人会不会再调这个,所以这里就使用 内存记数来完美的解决了这个问题。在每次使用这个对象时,都会retain 一次,这样就会返回,记数就会加1,relsere时 又会减1,这样到0了,就说明,调用结束了,就可以真正的delete掉了。
第三种、 retain antorelease
这个跟第二种的方式是差不多的,差别就在antorelease这个,每次都会antorelease来把这个加入到pool里面,到了最后就会把这个池自动释放。
三个方式应对不同的环境,我们要根据其来选择使用。