- Cocos2d-x by Example:Beginner's Guide(Second Edition)
- Roger Engelbert
- 251字
- 2025-04-04 21:05:35
What you get with Ref
With Ref
you get managed objects. This means that Ref
derived objects will have a reference count property, which will be used to determine whether an object should be deleted from memory or not. The reference count is updated every time an object is added or removed from a Cocos2d-x collection object.
For instance, Cocos2d-x comes with a Vector
collection object that extends the functionality of the C++ standard library vector (std::vector
) by increasing and decreasing the reference count when objects are added and removed from it. For that reason, it can only store Ref
derived objects.
Once again, every Ref
derived class can be managed the way things used to be managed in Objective-C before ARC- with retain
counts and autorelease
pools.
C++, however, comes packed with its own wonderful dynamic list classes, similar to the ones you would find in Java and C#. But for Ref
derived objects, you would probably be best served by Cocos2d-x managed lists, or else remember to retain and release each object when applicable. If you create a class which does not extend Ref
and you need to store instances of this class in a list container, then choose the standard library ones.
In the examples that follow in this book I will code primarily from within the framework, so you will get to see plenty of examples of cocos2d::Vector
being used, for instance, but I will also use a std::vector
instance or two in some of the games.