如何找到重复符号的位置

How to find the location of duplicate symbol

我在 compile sources 中列出了几个文件,它不想按名称排序,所以我不得不手动对它们进行排序以查找重复项。有没有更简单的方法来做到这一点?它只有约 100 个文件,但如果能知道更有效的方法就好了。

错误示例:

...
duplicate symbol _OBJC_CLASS_$_AppDelegate in:
    /Users/xxxx/Library/Developer/Xcode/DerivedData/JOMiPhoneApp-ginylosefnqdjpfprrdipmpewzun/Build/Intermediates/MyApp.build/Debug-iphoneos/MyApp.build/Objects-normal/arm64/AppDelegate-215945057A88172.o
ld: 34 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果您打开报告导航器,select 带有警告的构建,然后展开失败编译的控制台详细信息,它应该准确描述两个重复引用的位置(在我的示例中,在 AppDelegate.oViewController.o 中,后者是因为我 "accidentally" 做了 AppDelegate.m#import 而不是 ViewController.m 中的 AppDelegate.h) :

在左侧面板的项目导航器中,单击搜索选项卡并查找 AppDelegate。无论如何,您可以像这样搜索整个项目:

您还可以通过键入 command+shift+O(字母 "Oh"):

最后一种方法只有在不同源文件中定义了 AppDelegate 符号时才能找到它,但这是另一种需要考虑的途径。

单击 Xcode 中的报告导航器选项卡(命令8),然后单击显示红色生成错误图标。它应该更具体地向您展示发现错误的位置。如果您想了解更多信息,请单击右侧的“汉堡包”式按钮: