I think you have a flaw in your architecture there. The Player should not be a subclass of CCNode (or any cocos2d node class for that matter).
The CCNode is only the visual representation of your player-character, therefore your Player class should have a CCNode as member (or property as it's called in Objective-C). This makes your architecture much more flexible. You could implement a component-based architecture, where your node is part of a "VisualComponent", or you could have an inheritance-based architecture where you inherit from a "GameEntity" base-class etc. But inheriting from CCNode is a bad idea and will definitely hurt you in the long run.
Update: As requested in the comments, here's a short guide how you could refactor your code using a Player class that inherits from NSObject and implements a GameEntity Protocol. For a more complete documentation of protocols, read the Objective-C docs.
Protocols are much like interfaces known from other programming-languages. A very simple protocol could look like this:
#import "cocos2d.h"
/**
Protocol for a game entity
*/
@protocol GameEntityProtocol<NSObject>
/** Visual representation of the entity */
@property(assign) CCNode* node;
/** Update method */
-(void) update:(ccTime)dt;
@end
Your Player class could then be implemented like this:
#import "GameEntityProtocol.h"
// Player interface
@interface Player : NSObject<GameEntityProtocol>
{
// player related members
}
@end
// Player implementation
@implementation Player
@synthesize node;
-(void) dealloc
{
[self setNode: nil];
[super dealloc];
}
-(void) update:(ccTime)dt
{
// do something.. update node position etc.
}
@end
And finally in your "Level" or "Game-World" you would have something like the following (note that you could also move the initialization of the player-node to the players init method, but it's easier to keep everything "outside" so you could read stuff from a data-file etc.):
// in your init method or where you load the level
// entities is a class member of type NSMutableArray*
entities = [NSMutableArray arrayWithCapacity: 4];
Player *player = [[Player alloc] init];
[player setNode:[CCSprite spriteWithSpriteFrameName:@"player_image.png"]];
[sceneSpriteBatchNode addChild: player.node];
[entities addObject:player];
// update loop could look like this
-(void) update:(ccTime)deltaTime
{
for (id<GameEntityProtocol> entity in entities) {
[entity update:deltaTime];
}
}