自动释放池——autoreleasepool

版权声明:资源共享,为我中华IT尽一份绵薄之力,号召无私的黑客奉献精神。。。。。。。。。 https://blog.csdn.net/chaoge321/article/details/50826178

当您向一个对象发送一个autorelease消息 时,cocoa就会将该对象的一个引用放入到最新的自动释放池,它仍然是个正当的对象,因此自动释放池定义的作用域内的其他对象可以向它发送消息,当程序执行到作用域结束的位置时,自动释放池就会释放,池中的所有的对象也就被释放

1、objective-c是通过一种“referring counting”(引用计数)的方式来管理内存的,对象在开始分配内存时(alloc)引用计数为1,以后每当碰到有copyretain的时候引用计数都会加1,每当碰到release和aurorelease时引用计数就会减一,如果此对象的计数变为了0,就会被系统销毁

2、NSAutoreleasePool就是用来做引用计数的管理工作的,这个一般不用管。

3、autorelease和release没什么区别,只是引用计数减一的时机不同而已,autorelease会在对象的使用真正结束的时候才做引用计数减一。

引用计数:

        

猜你喜欢

转载自blog.csdn.net/chaoge321/article/details/50826178