receiver type *** for instance message is a forward declaration
That basically means that you need to import the .h file containing the declaration of States.
However, there is a lot of other stuff wrong with your code.
- You're -init'ing an object without
+alloc
'ing it. That won't work - You're declaring an object as a non-pointer type, that won't work either
- You're not calling
[super init]
in-init
. - You've declared the class using
@class
in the header, but never imported the class.
FWIW, I got this error when I was implementing core data in to an existing project. It turned out I forgot to link CoreData.h to my project. I had already added the CoreData framework to my project but solved the issue by linking to the framework in my pre-compiled header just like Apple's templates do:
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#endif
I got this sort of message when I had two files that depended on each other. The tricky thing here is that you'll get a circular reference if you just try to import each other (class A imports class B, class B imports class A) from their header files. So what you would do is instead place a forward (@class A
) declaration in one of the classes' (class B's) header file. However, when attempting to use an ivar of class A within the implementation of class B, this very error comes up, merely adding an #import "A.h"
in the .m file of class B fixed the problem for me.