Whenever I build the following code, I get the error above.
//Controller.h #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #import "PolygonShape.h" #import "PolygonView.h"; @interface Controller : NSObject { IBOutlet UIButton *decreaseButton; IBOutlet UIButton *increaseButton; IBOutlet UILabel *numberOfSidesLabel; IBOutlet PolygonShape *shape; IBOutlet PolygonView *shapeView; } - (IBAction)decrease; - (IBAction)increase; - (void)awakeFromNib; @end //Controller.m #import "Controller.h" @implementation Controller @end
However, when I replace the import statement and put a forward class reference instead, the code compiles.
//Controller.h #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #import "PolygonShape.h" @class PolygonView; @interface Controller : NSObject { IBOutlet UIButton *decreaseButton; IBOutlet UIButton *increaseButton; IBOutlet UILabel *numberOfSidesLabel; IBOutlet PolygonShape *shape; IBOutlet PolygonView *shapeView; } - (IBAction)decrease; - (IBAction)increase; - (void)awakeFromNib; @end //Controller.m #import "Controller.h" #import "PolygonView.h" @implementation Controller @end
Can anyone explain?
Yes, I too had this problem of Cyclical Dependencies where I was importing both classes in each other. I also didn't know what Forward Declarations were. I promptly searched it on Wikipedia but it was poorly described. I found this post that explains what they are and how they relate to cyclical imports. http://timburrell.net/blog/2008-11-23/effective-c-cyclical-dependencies/
Note: The link keeps going down so I just PDF'd it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With