ios - Apple Mach-O 链接

标签 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

代码有什么问题?

(这只是部分代码。)

最佳答案

问题是您已经定义了类XYZFlipsideViewController 的实现两次,链接器无法弄清楚您指的是哪个定义:

duplicate symbol _OBJC_METACLASS_$_XYZFlipsideViewController

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

XYZAppDelegate.o
XYZFlipsideViewController.o

有两种可能的解释:

  • 您在两个源文件 XYZAppDelegate.mXYZFlipsideViewController.m 中都有一个 @implementation XYZFlipsideViewController ... @end block ,
  • 您在头文件中有 @implementation ... @end block ,该 block 由 #include/#import 编辑那些源文件

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

理解 @interface@implementation 之间的区别很重要——前者说“这是一个类的名称,它的实例变量的名称,及其成员函数的名称”,而后者表示“这是该类的所有属性和成员函数的定义”。

关于ios - Apple Mach-O 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16406604/

相关文章:

ios - 检查图像大小时出现内存问题

ios - 自定义推送通知声音(.wav)文件未在 ios7 中播放

ios - 在 xCode UI 测试中访问 UIKit 对象

ios - Apple Mach-O 链接器错误(当我选择 iOS 设备时无法构建我的应用程序)

ios - 发现意外的 Mach-O header 代码 : 1918975009 in xCode 6

ios - 弱属性 objective c 内存管理

ios - 在 UILabel 中显示核心数据计数,不断更新

objective-c - UICollectionView 单元格中的对象/项目而不是索引?

ios - 制作新项目时苹果男子气概链接器错误

ios - 为不同类型的用户声明一个枚举来改变应用程序中使用的颜色