I\'m making a Cocos2d game for iphone, and I have my main game mode, Game, which inherits from CCLayer.
I\'m trying to make another game mo
You simply have an import cycle:
Game imports SplashScreenLayerSplashScreenLayer imports MathGameMathGame imports GameYour solution:
Leave the import inside the MathGame, and change the other imports to @class.
To sum it up:
// Game.h #import "cocos2d.h" #import@class SplashScreenLayer; @interface Game : CCLayer // A bunch of stuff @end The new game type: // MathGame.h #import "Game.h" @interface MathGame : Game @end And the main menu that includes both: // SplashScreen.h #import "cocos2d.h" #import "HowToPlayLayer.h" #import "AboutLayer.h" @class Game; @class MathGame; @interface SplashScreenLayer : CCLayer // A bunch of stuff @end
With your question answered above, let me explain a few things I already know from reading about forward declerations and import cycles:
First, go read about them! They are a very important part of Objective-C, and you don't want to miss it!
Secondly, use @class whenever you need that class for private variables or method parameters. Use imports for inheritance and strong properties.
Thirdly, don't forget to #import your forwarded classes in the implementation file!