Apple Mach-O Link

时间:2013-05-06 20:20:29

标签: ios objective-c mach-o

编译代码时遇到错误。问题标识符将其标记为“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

代码有什么问题?

(这只是代码的一部分。)

2 个答案:

答案 0 :(得分:2)

问题在于您已经定义了类XYZFlipsideViewController的实现两次,并且链接器无法确定您的定义:

duplicate symbol _OBJC_METACLASS_$_XYZFlipsideViewController

它定义的两个地方是这两个目标文件:

XYZAppDelegate.o
XYZFlipsideViewController.o

有两种可能的解释:

  • 您在两个源文件@implementation XYZFlipsideViewController ... @endXYZAppDelegate.m
  • 中都有一个XYZFlipsideViewController.m
  • 您的头文件中有@implementation ... @end块,这两个源文件都是#include / #import

在第一种情况下,解决方案是删除其中一个@implementation块。在第二种情况下,解决方案是@implementation块从标头移动到源文件,但将@interface块保留在头文件中。

理解@interface@implementation之间的区别非常重要 - 前者说“这是类的名称,实例变量的名称,以及其成员函数的名称”而后者说“这里是类的属性和成员函数的所有定义”。

答案 1 :(得分:0)

确保并检查您的实际项目目录中是否存在重复文件的多个文件。有时我忘记在删除和重新创建文件时单击发送到垃圾箱删除参考。

我不确定这是你的问题,但我之前遇到过类似的问题。

祝你好运! ^^