Oh, here’s caused by a difference between c*+ & objc
When your TouchSprite inherits static method CCSprite::spriteWithSpriteFrameName, it calls CCSprite::spriteWithSpriteFrame, and finally invokes init in CCSprite::initWithTexture.
The problem is here. In C*+ class, init() or this->init() will invoke the “init” method in the current class, which is your parent class; unless we force to ((TouchSprite*)this)->init() in CCSprite.cpp. But obviously we cannot do this.
And in objc class, [self init] will invoke the “init” from your child class TouchSprite.