CCArray create vs initWithObjects

i create an array for animation sprite
1st : creat() and addObject

local arr = CCArray:create() arr:addObject(CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("exp_exp0002")) arr:addObject(CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("exp_exp0003")) arr:addObject(CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("exp_exp0004"))
2nd : creat() and initWithObjects
local arr = CCArray:create() arr:initWithObjects( CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("exp_exp0002"), CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("exp_exp0003"), CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("exp_exp0004"),nil)
3rd : creat (object,…)
local arr = CCArray:create( CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("exp_exp0002"), CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("exp_exp0003"), CCSpriteFrameCache:sharedSpriteFrameCache():spriteFrameByName("exp_exp0004"),nil)

i though all 3 above are same but
the 1st solution work well, while 2nd and 3rd dont work at all
is something wrong here ?
in my game, i need to work with the 3rd, so i can reduce variables declare
pls help

There are no lua bindings for your options 2 and 3. Only ways to create CCArray with lua (from /tools/tolua++/CCArray.pkg):

static CCArray* create();
static CCArray* createWithObject(CCObject* pObject);
static CCArray* createWithArray(CCArray* otherArray);
static CCArray* createWithCapacity(unsigned int capacity);
static CCArray* createWithContentsOfFile(const char* pFileName);

oh i see

you also show me where to search lua function bindings

thank you so much