几个关键方法:
AutoreleasePool类中的clear方法,在每一帧的最后,会将_managedObjectArray中的autorelease对象移除,同时对每个对象执行一边release方法。
Ref类的release方法中,对引用计数减1,如果引用计数等于0,则释放这个对象。
AutoreleasePool其实只保留一帧内创建的Autorelease对象,如果在这一帧内,该对象的引用计数没有增加,也就是说没有附加到父节点上,没有对其执行retain,引用计数没有加1,仍是创建时候的1的话,那么这个对象在一帧结束时,调用release,就会释放掉。
如果这个对象在clear之前,附加到了父节点上,那么它就不会释放掉,但是会从池中移除。等到它从父节点remove的时候,会执行release,从而达到释放内存的目的。