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!
In general, this will occur when the code for BoxView
is not being compiled into your target correctly.
You need to ensure that the target you're building has its corresponding box checked for your BoxView.m
implementation file. Your question suggests that you've tried this, but here's a screenshot (from Xcode 4) just for clarity's sake.
A 'Clean and Build' never hurts, either.
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.
Added Scenario
If your project has module dependencies(framework), rebuild them before building your main project.
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