编译代码时遇到错误。问题标识符将其标记为“Apple Mach-O Link Linker命令失败”。我不知道这是什么,所以我找不到解决办法。
duplicate symbol _OBJC_METACLASS_$_XYZFlipsideViewController in:
/Users/studentuse/Library/Developer/Xcode/DerivedData/RSC-
aardgrngtzicssfffcbdqsezpqmv/Build/Intermediates/RSC.build/Debug-
iphonesimulator/RSC.build/Objects-normal/i386/XYZAppDelegate.o
/Users/studentuse/Library/Developer/Xcode/DerivedData/RSC-
aardgrngtzicssfffcbdqsezpqmv/Build/Intermediates/RSC.build/Debug-
iphonesimulator/RSC.build/Objects-normal/i386/XYZFlipsideViewController.o
ld: 6 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation) //This
line has the mistake
代码有什么问题?
(这只是代码的一部分。)
答案 0 :(得分:2)
问题在于您已经定义了类XYZFlipsideViewController
的实现两次,并且链接器无法确定您的定义:
duplicate symbol _OBJC_METACLASS_$_XYZFlipsideViewController
它定义的两个地方是这两个目标文件:
XYZAppDelegate.o
XYZFlipsideViewController.o
有两种可能的解释:
@implementation XYZFlipsideViewController ... @end
和XYZAppDelegate.m
,或 XYZFlipsideViewController.m
块
@implementation ... @end
块,这两个源文件都是#include
/ #import
在第一种情况下,解决方案是删除其中一个@implementation
块。在第二种情况下,解决方案是将@implementation
块从标头移动到源文件,但将@interface
块保留在头文件中。
理解@interface
和@implementation
之间的区别非常重要 - 前者说“这是类的名称,实例变量的名称,以及其成员函数的名称”而后者说“这里是类的属性和成员函数的所有定义”。
答案 1 :(得分:0)
确保并检查您的实际项目目录中是否存在重复文件的多个文件。有时我忘记在删除和重新创建文件时单击发送到垃圾箱删除参考。
我不确定这是你的问题,但我之前遇到过类似的问题。
祝你好运! ^^