码迷,mamicode.com
首页 > 其他好文 > 详细

内存管理之三——Cocos2d-x学习历程(七)

时间:2015-04-23 17:20:49      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

1.容器

    Cocos2d-x引擎为我们提供了CCArray、CCDictionary等Objective-C风格的容器。使用Cocos2d-x容器的一个重要原因在于Cocos2d-x的内存管理。按照Cocos2d-x容器的内存管理要求,存入容器的对象必须是CCObject或其派生类。同时,Cocos2d-x的容器本身也是CCObject的派生类,当容器被释放时,它保存的所有元素都会被释放一次引用。此外,对于跨语言移植游戏(如从Objective-C移植到C++)的开发者而言,把原游戏中大量使用的容器全部替换为STL库容器是一个极富挑战性的任务。容器存在的意义不仅仅局限于内存管理方面,因此我们应该尽量采用Cocos2d-x提供的容器类。

2.相关辅助宏

    引用计数很巧妙也很方便,但大部分处理过程涉及指针,难免比较烦琐,也容易出错。针对这个问题,Cocos2d-x为我们准备了一系列辅助宏来简化代码,这些宏都包含在头文件"CCPlatform Macro.h"里。

3.Cocos2d-x内存管理原则

    我们已经对Cocos2d-x采用的内存管理机制有了一个完整的认识。最后,我们将总结使用Cocos2d-x开发游戏时内存管理的原则:程序段必须成对执行retain()和release()或者执行autorelease()来声明开始和结束对象的引用;工厂方法返回前,应通过autorelease()结束对该对象的引用;对象传值时,应考虑到新旧对象相同的特殊情况;尽量使用release()而不是autorelease()来释放对象引用,以确保性能最优;保存CCObject的子类对象时,应严格使用Cocos2d-x提供的容器,避免使用STL容器,对象必须以指针形式存入。

   如果希望自定义的类也拥有Cocos2d-x的内存管理功能,可以把CCObject作为自定义类的基类,并在实现类时严格遵守Cocos2d-x的内存管理原则。

4.生命周期分析

内存管理之三——Cocos2d-x学习历程(七)

标签:

原文地址:http://www.cnblogs.com/ling-mo/p/4451030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!