Undefined symbols: "_OBJC_CLASS_$ error

Viewed 39358

I've been looking through countless posts about this error:

Undefined symbols:
"_OBJC_CLASS_$_BoxView", referenced from:
  objc-class-ref-to-BoxView in ViewMovingViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

BoxView is a subclass of UIView, and the UIKit framework has been included. BoxView.h has been imported in the ViewController.

The ViewController contains this code:

-(void) addBoxViewAtLocation:(CGPoint)point {
    CGRect rect;  
    rect.origin.x = point.x;  
    rect.origin.y = point.y;  
    rect.size.width = 80;  
    rect.size.width = 40;  
    BoxView *newView = [[BoxView alloc] initWithFrame:rect];  
    newView.backgroundColor = [UIColor yellowColor];  
    [mainView addSubview:newView];  
}  

And BoxView contains this code:

- (id)initWithFrame:(CGRect)frame {     
    self = [super initWithFrame:frame];  
    if (self) {  
        // no further initialization  
    }  
    return self; 
}  

This is the line that's causing the error, from the code above:

BoxView *newView = [[BoxView alloc] initWithFrame:rect];

When I change BoxView to UIView in that line, the error goes away. Does anyone know what I need to change here? I have looked through many posts about this, but most answers say it's link related, but I've tried ticking and unticking certain boxes with no success. I'm wondering if the error is in my code? Any suggestions would be appreciated!

3 Answers

I just want to add that Ben Mosher's answer is totally right. But there's another way to include the files to build in the Target settings.

enter image description here

Added Scenario

If your project has module dependencies(framework), rebuild them before building your main project.

Related