Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

error: expected specifier-qualifier-list before...in Objective C?

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?

like image 419
Ridwan Avatar asked Aug 07 '09 19:08

Ridwan


1 Answers

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.

like image 120
ChrisJF Avatar answered Oct 07 '22 18:10

ChrisJF