Reputation: 301
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!
Upvotes: 30
Views: 43506
Reputation: 1
I had a similar problem. In my case, it was a problem caused by LFS.
Open the Terminal application.
Install Git-LFS.
brew install git-lfs
Enter this command for initialization after LFS install was completed.
git-lfs install
4-1. (If you use CocoaPods) Move to project folder, and reinstall Pods(remove -> install).
4-2. (If you not use CocoaPods) Remove clone, and download it again.
Upvotes: 0
Reputation: 33
Added Scenario
If your project has module dependencies(framework), rebuild them before building your main project.
Upvotes: 2
Reputation: 19790
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.
Upvotes: 4
Reputation: 13381
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.
Upvotes: 54