`
lizaochengwen
  • 浏览: 667186 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cocos2d-x与cocos2d-iphone+objc的区别

 
阅读更多
cocos2d-x是由国内一个团队,将objc语言的cocos2d引擎翻译到c++语言,以实现了跨平台功能。但是由于c++和objc在一些地方有细微的差别,因此导致了cocos2d-x与cocos2d相比也出现了一些使用上的不同。一下我将列出自己在开发过程中发现的一些不同点:

1. CCMutableDictionary<key, CCObject*>与NSMutableDictionary

  CCMutableDictionary是cocos2d-x自己写的一个类,它模仿了NSMutableDictionary。但是它有一点和NSMutableDictionary是不一样的。NSMutableDictionary的setObjectForKey方法,如果发现这个key已经存在于字典中的时候,它会自动用新的object覆盖掉原有的object。而CCMutableDictionary,由于它是使用map实现的字典功能。而在map里面,如果key已存在,是不会用新的object覆盖掉原有object的。由于这一区别不会导致程序编译出错,所以只有在程序运行以后才会发现问题,在使用CCMutableDictionary的时候需要特别注意这一点。

2. CCArray与NSMutableArray

  CCArray也是cocos2d-x自己写的类。它相当于是objc的NSArray。在cocos2d-x中是没有NSArray的概念的(NSArray和NSMutableArray的唯一区别就是一个不可以改变数组中含有的对象,另一个可以改变)。但是CCArray也有一个小问题。首先,CCArray是不能使用new的方式创建的。其次,使用CCArray::array()创建的数组,即使这个数组已经是当前类的成员变量,也必须要做一次retain,否则的话在创建数组的函数返回的时候,CCArray就会被直接释放掉了。由于这个问题也无法通过编译时候暴露出来,而且在objc中创建自动释放的NSArray类型的成员变量的时候是不需要retain的,所以当我从objc转为使用cocos2d-x的时候,经常会忘记做retain,多次导致了程序在其他函数中使用该成员变量的时候出现错误。

(待续)


原文:http://www.cnblogs.com/eagley/archive/2012/01/09/2317270.html
分享到:
评论

相关推荐

    cocos2d-objc-ext, Cocos2D iphone的扩展和实用程序类.zip

    cocos2d-objc-ext, Cocos2D iphone的扩展和实用程序类 Cocos2D扩展cocos2d-iphone的扩展和实用程序类。cocos2d-iphone-ext,将包括不同的类和库,而不是suitet发布的官方 cocos2d-iphone 。 一些类最初可以能会被...

    ios-cocos2d-objc实现的跑酷游戏.zip

    【标题】"ios-cocos2d-objc实现的跑酷游戏.zip" 提供的是一个基于Cocos2D-Objective-C框架开发的iOS平台上的跑酷类游戏源代码。Cocos2D-Objective-C是Cocos2D游戏引擎的一个版本,专为iOS应用设计,它允许开发者使用...

    ios 视频播放例子与cocos2d结合

    3. **将AVPlayerLayer与Cocos2D结合**:由于Cocos2D使用的是基于OpenGL的渲染,我们需要将AVPlayerLayer添加到Cocos2D的EAGLView上,而不是CCNode。首先获取EAGLView,然后将其添加到视图层次结构中。 ```objc ...

    iOS 在cocos2d 环境下获取手机通讯录的所有信息

    本教程将详细介绍如何在Cocos2D环境下获取iPhone或iPad的通讯录数据。 首先,我们需要理解iOS的权限管理系统。在iOS 6及之后的版本中,访问用户隐私数据如通讯录需要获取用户的明确授权。因此,在Info.plist文件中...

    vecodo-luajava-master_iphone_VEC-466友人_

    在iOS应用中集成Lua和Java,开发者需要通过第三方库,如Corona SDK或Cocos2d-x,这些框架提供了Lua与原生iOS代码的桥梁。Luajava在Android开发中更为常见,因为它是直接与Java交互的,但在iOS上可能需要额外的适配...

    iphone开发资料

    包括《iPhone开发基础教程》(电子版下载).pdf》、《cocos2d_iPhone_API.chm》、《iPhone3开发基础教程源码.zip》、《iPhone 开发教程.chm》、《iPhoneCookBook.chm》、《ObjC(2006.05.23).pdf》和《Objective-C 第...

Global site tag (gtag.js) - Google Analytics