Will calling release() on CCArray release all objects that array contain?

This might sounds a bit noobish question but I couldn’t find anything on google regarding this. :frowning:
I have two CCArrays
# holds the pointers for all moving sprites on CCLayer. (characters etc)
# holds the pointers for all non-moving sprites on same CCLayer. (interactive objects)

In constructor where I initialize the CCLayer I did this

movingSpriteArray = CCArray::create(); movingSprite->retain(); interactiveSpriteArray = CCArray::create(); interactiveSpriteArray->retain();

And in destructor I released these CCArray pointers.

movingSpriteArray->release(); interactiveSpriteArray->release();

My question is will releasing the CCArray objects release all the objects that array is holding?
Or do I have to iterate through all the objects in CCArray and release them before I release the CCArray.

Another doubt is, is it better to call autorelease or release on the array in destructor?

  1. CCArray will release all the objects it hold.
  2. It is better to invoke release. Because it is easy to debug.