垃圾回收机制(GC):
用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。
需要注意的是:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身。
Autorelease:
Autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是把该Object放入了当前的Autorelease pool中,当该pool被释放时,该pool中的所有Object会被调用Release。
autorelease原理:
1.先建立一个autorelease pool
2.对象从这个autorelease pool里面生成。
3.对象生成之后调用autorelease函数,这个函数的作用仅仅是在autorelease pool中做个标记,让pool记得将来release一下这个对象。
4.当pool要把池中的对象release的时候,pool本身也需要rerlease, 此时pool会把每一个标记为autorelease的对象release一次。如果某个对象此时retain count大于1,这个对象还是没有被销毁。(被标为autorelease的对象,并不是等程序结束时才release,如:在viewDidLoad中创建一个autorelease对象,在viewDidLoad走完,一次消息循环完毕,这个autorelease pool中的对象就会被release,button的点击事件,点击代码执行完会release一下autorelease类型的变量)