我已经看了无数关于这个错误的帖子:
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
是UIView
的一个子类,UIKit
框架已经包含在内。BoxView.h
已导入ViewController中。
ViewController包含以下代码:
-(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];
}
BoxView
包含以下代码:
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// no further initialization
}
return self;
}
这是导致错误的行,来自上面的代码:
BoxView *newView = [[BoxView alloc] initWithFrame:rect];
当我在该行中将BoxView
更改为UIView
时,错误消失了。有谁知道我这里需要改什么吗?我看过很多关于这个的帖子,但大多数答案都说这是链接相关的,但我试过勾选和取消勾选某些框,但没有成功。我想知道这个错误是否在我的代码中?任何建议将不胜感激!
4条答案
按热度按时间9rygscc11#
通常,当
BoxView
的代码没有正确编译到目标中时,就会发生这种情况。您需要确保您正在构建的目标在
BoxView.m
实现文件中选中了相应的复选框。你的问题表明你已经尝试过了,但这里有一个截图(来自Xcode 4)只是为了清楚起见。一个“清洁和建设”从来没有伤害,无论是。
rqmkfv5c2#
我只想补充一点,本·莫舍的回答是完全正确的。但还有另一种方法可以在目标设置中包含要构建的文件。
zpqajqem3#
新增场景
如果您的项目有模块依赖项(框架),请在生成主项目之前重新生成它们。
ifmq2ha24#
我也遇到过类似的问题。在我的情况下,这是一个由LFS引起的问题。
1.打开终端应用程序。
1.安装Git-LFS。
brew install git-lfs
git-lfs安装
4-1.(如果您使用CocoaPods)移动到项目文件夹,然后重新安装Pods(remove -〉install)。
4-2.(如果您不使用CocoaPods)删除克隆,然后重新下载。