cocos2d 释放资源 总结

来源:互联网 发布:有源码怎么建站 编辑:程序博客网 时间:2024/05/21 15:07

cocos2d的自动回收机制用起来还是挺好用的,但是有的时候我们还是要写单一的函数来实现场景的释放,经过retain后的类的释放,std::vector的释放。

  • 如果只是单一的一个场景类或者Layer类,在使用完毕后可以直接调用removefromParent()进行释放,这时候场景类相当于被addchidren()的“父亲”遗弃的婴儿,在cocos2d的自动回收机制中调用自己的析构函数进行释放,首先释放自己,在释放自己的成员类,然后释放自己的基类(根据析构函数的执行顺序,是构造函数执行的反顺序。)
  • 程序当中如果有经过retain()的类,一定要手动cc_safe_delete进行释放,retain的类系统是不会自动回收的。
  • 程序中当然少不了std::vector,vector存储变量是连续空间的,所以在定义的时候就会自动申请一段空间来存放数据,当空间全部耗尽,会继续申请空间来存放数据。所以,在释放vector的时候出了clear清除数据别忘了清除申请的空间,所以你要使用shrik_to_fit()来清除多余的空间。当然也可以使用vector().swap(myvector);
    来释放空间。
    swap交换技巧实现内存释放思想:vector()使用vector的默认构造函数建立临时vector对象,再在该临时对象上调用swap成员,swap调用之后对象myvector占用的空间就等于一个默认构造的对象的大小,临时对象就具有原来对象v的大小,而该临时对象随即就会被析构,从而其占用的空间也被释放。
0 0
原创粉丝点击