我有一个简单的项目,在我的基本ViewController.m
上我试图通过以下方式转移到另一个UIViewController
:
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
...
}
- (void)addAlarmBrick {
NewAlarmViewController *navc = [[NewAlarmViewController alloc] init];
[self presentViewController:navc animated:YES completion:nil];
}
我的项目中有NewAlarmViewController,目标成员资格中列出了.m
文件。
这是完整的错误消息:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_NewAlarmViewController", referenced from:
objc-class-ref in ViewController.o ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我在这里做错了什么?
修改
添加两个文件的设置:
.m文件:
.h文件:
答案 0 :(得分:1)
嗯,事实证明错误没有将以下内容添加到相关文件中:
@implementation NewAlarmViewController
@end
我不知道为什么必须添加@implementation,但必须是。
答案 1 :(得分:0)
转到所有设置,选择项目并在构建选项下检查c / c ++ / obj c的体系结构和编译器,如屏幕截图所示。
答案 2 :(得分:0)
听起来您的项目中可能包含一个仅为ARM编译的库,并且不提供在模拟器上运行的目标代码。您是否在项目中包含了任何第三方库? (或者来自第三方库的NewAlarmViewController?)
答案 3 :(得分:0)
也许Xcode搞砸了。您是否已尝试从项目中删除NewAlarmViewController
并重新读取它? - >选择.h和.m文件,按删除,删除引用,然后再将它们拖到项目中。
同样清理构建文件夹(cmd + alt + shift + k)并重建项目。