Objective c 未定义的符号:"_OBJC_类_$error

Objective c 未定义的符号:"_OBJC_类_$error,objective-c,ios,xcode,linker,Objective C,Ios,Xcode,Linker,我已经浏览了无数关于这个错误的帖子: 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已导入到ViewCo

我已经浏览了无数关于这个错误的帖子:

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
时,错误消失了。有人知道我需要改变什么吗?我已经看过很多关于这个的帖子,但是大多数的答案都说它与链接有关,但是我试着勾选和取消勾选某些框,但没有成功。我想知道我的代码中是否有错误?如有任何建议,将不胜感激

通常,当
BoxView
的代码未正确编译到目标中时,会发生这种情况

您需要确保为您的
BoxView.m
实现文件选中了正在构建的目标对应的复选框。您的问题表明您已经尝试过了,但为了清晰起见,这里有一个屏幕截图(来自Xcode 4)


“干净整洁”也没有坏处。

我只想补充一点,本·莫舍的答案是完全正确的。但是,还有另一种方法可以在目标设置中包含要构建的文件


新增场景


如果您的项目具有模块依赖项(框架),请在构建主项目之前重新构建它们。

谢谢,我们确实尝试了干净的构建,但没有遇到BoxView.m的复选框。。我在哪里能找到那个滴答声?我正在查看构建设置,但没有看到它。。我正在使用旧版本的X-Code,X-Code 3,所以我认为我的版本不符合您发送的屏幕截图。哦,事实上,我刚刚找到了它。不知道在Xcode 4中是否如此,但在Xcode 3中,您可以直接将.m文件拖放到target中。有时,当我将文件添加到项目中时,它们在项目生成时不会被编译。在Xcode 4中,我显式地将它们添加到“构建阶段”->“编译源代码”下。为什么默认情况下(有时)没有设置这些选项,我不知道。@cms如果这确实解决了(或帮助了)您的问题,如果您能接受答案,那就太好了。:-)我说不出你是怎么回答我的。非常感谢您分享这些知识。Xcode 7中的工作原理非常相似,但是您可以从给定选定目标的
常规
选项卡访问
链接的框架和库。