cocos2d 游戏开发 节选
所有节点的基类都是 CCNode,它包含一个位置属性,但没有视觉上的显示。它是其他所有节点类的父类,包括最基本的CCScene类和 CCLayer类。
CCScene 类是一个抽象概念,它仅用于根据对象的像素坐标把对象放置到场景中正确的位置。所以,CCScene 节点通常是整个cocos2d场景体系的根节点。多数时候只有一个运行着的场景,不过从一个场景过渡到另一个场景的情况是例外。
CCLayer 类本身几乎没有什么功能,但它可用于接收触摸和加速计输入。它常被用作CCScene的第一个子节点,因为每个游戏至少都会使用触摸输入的功能
每一次 cocos2d进入下一帧,那些不再使用的自动释放对象将被自动地释放。但这样做也有一个缺点:如果使用上述代码,然后在下一帧或者以后想要访问 myNode 对象时,你就会发现它已经不在内存中了。如果这时发送消息给它,将导致程序出现 EXC_BAD_ACCESS 错误而崩溃。
简单地把 CCNode* myNode 变量当作类成员变量并不意味着对象使用的内存会被自动保留下来。如果想在下一帧或者以后的帧中访问自动释放对象,就必须保留它。并且,如果没有显式地将其添加为子节点,那么之后还是需要对其进行手动释放。
有一种可以更好地使用自动释放对象的方法,并且不需要显式地调用 retain 方法——可以将生成的CCNode对象作为子节点添加到另一个派生自CCNode 的对象中,甚至可以删除成员变量而直接依赖 cocos2d 来保存对象: