2012-02-07 75 views
6

我不确定我做了什么,但我添加了一个IBOutlet以在TableView单元格中显示其他属性。在构建应用程序,我得到以下错误信息......重复符号错误

Ld /Users/roberthill/Library/Developer/Xcode/DerivedData/PHAInspect-awfhtfopjdgfmsdsjfjivdnlzgir/Build/Products/Debug-iphonesimulator/PHAInspect.app/PHAInspect normal i386 
    cd /Users/roberthill/Documents/PHAInspect 
    setenv MACOSX_DEPLOYMENT_TARGET 10.6 
    setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk -L/Users/roberthill/Library/Developer/Xcode/DerivedData/PHAInspect-awfhtfopjdgfmsdsjfjivdnlzgir/Build/Products/Debug-iphonesimulator -F/Users/roberthill/Library/Developer/Xcode/DerivedData/PHAInspect-awfhtfopjdgfmsdsjfjivdnlzgir/Build/Products/Debug-iphonesimulator -filelist /Users/roberthill/Library/Developer/Xcode/DerivedData/PHAInspect-awfhtfopjdgfmsdsjfjivdnlzgir/Build/Intermediates/PHAInspect.build/Debug-iphonesimulator/PHAInspect.build/Objects-normal/i386/PHAInspect.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -Xlinker -no_implicit_dylibs -D__IPHONE_OS_VERSION_MIN_REQUIRED=50000 -framework CoreData -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/roberthill/Library/Developer/Xcode/DerivedData/PHAInspect-awfhtfopjdgfmsdsjfjivdnlzgir/Build/Products/Debug-iphonesimulator/PHAInspect.app/PHAInspect 

ld: duplicate symbol _OBJC_METACLASS_$_Inspection in /Users/roberthill/Library/Developer/Xcode/DerivedData/PHAInspect-awfhtfopjdgfmsdsjfjivdnlzgir/Build/Intermediates/PHAInspect.build/Debug-iphonesimulator/PHAInspect.build/Objects-normal/i386/Inspection-AEDA73D75B42426A.o and /Users/roberthill/Library/Developer/Xcode/DerivedData/PHAInspect-awfhtfopjdgfmsdsjfjivdnlzgir/Build/Intermediates/PHAInspect.build/Debug-iphonesimulator/PHAInspect.build/Objects-normal/i386/Inspection-AEDA73D75B42426A.o for architecture i386 
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/clang failed with exit code 1 

我试着打了退堂鼓的变化添加IBOutlet中,但我仍然收到此错误消息。

我检查了其他类似的帖子,但我不认为条件是相同的(尽管我可能是错的)。有任何想法吗?

+0

我遇到了像他之前的事情。如果您执行清理并且不能解决问题,请尝试清除派生数据。要清除派生数据,请转到管理器 - >项目 - >删除按钮以获取派生数据。 – Freddy 2012-02-07 02:24:58

回答

1

不确定,但一个愚蠢的问题 - 你清理旧代码后干净吗?有时候这些东西会四处流窜。

+0

不清楚你的意思是“干净”。 – 2012-02-07 02:15:24

+1

菜单:产品 - 清洁。它删除所有的临时构建目录。当你从代码库中删除东西时,这很有用,因为有时编译对象仍然在临时构建目录中,即使你的源代码不再包含它们,也会“意外”包含它们。这可能是这样的意外错误的来源。它不会伤害任何东西,所以你可以确定。 – drekka 2012-02-07 02:24:43

+0

@贾斯汀的回答听起来不错。我也会检查一下。 – drekka 2012-02-07 02:25:16

20

当源码在您的目标中编译两次或者它构建在两个单独的目标中时,可能会发生这种情况。你可以在你的目标的构建阶段验证它,或者从目标中移除它,然后重新添加它。

更新

Kasas指出了一个新的Xcode功能(在编辑的其他审阅拒绝),在Xcode中可以检测到一些这样的情况下你 - 只要“验证”的目标或项目设置。如果找到,Xcode将提供为您删除冗余编译。感谢Kasas。

+0

这对我来说是诀窍。谢谢。 – 2012-12-28 06:02:02

+1

+1对于我整周读的最有帮助的东西 – katzenhut 2013-02-21 12:09:31

+0

这适用于我 – 2013-09-08 17:28:48

0

这可能B Due公司给您已包含Inspection

50

我也有类似问题的两个源文件的原因:

ld: duplicate symbol _OBJC_METACLASS_$_MyClass1 in /Users/.../MyClass2.o and /Users/.../MyClass1.o for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

最后的原因是内部MyClass2.m我写的:

#include "MyClass1.m" 

而不是

#include "MyClass1.h" 

当你在.m文件中有很多#include语句时,很难找到它。

+1

完美...这样一个简单的错误使。感谢提示。 – 2012-11-08 22:14:06

+0

谢谢!所以跛脚,它会自动完成.m文件... – 2013-03-14 05:10:57

+0

对我感到羞耻...得到了相同的错字 – asdf 2013-03-14 18:23:26

2

在我的第一个应用程序中,更换一个类后出现此问题。因为我不想完全删除旧的类,所以我将它移动到另一个组,仍在xcode中。 xcode试图编译这个类的两个副本,导致错误。从项目中删除对旧类的引用修复了我的问题。

Upvote去了quarac,这让我更容易发现。

11

除.m问题外,如果您在错误的文件夹中创建模型,请删除它们,然后在正确的文件夹中创建/替换模型。您可能需要删除目标构建阶段中的重复项目编译源分组。

+0

这正是我发生的事情。感谢Rob。 – 2012-12-12 16:29:50

0

我真的不明白为什么这会是一个问题,所以也许有人可以澄清,但对我来说,问题是,我有进口而宣布具有相同名称的实例变量作为一个在目前的另一个类类。

当我在导入类的实现中更改了伊娃的名称时,错误消失了。

希望这会有所帮助!

0

如果您在两个不同的类中具有相同名称的常量定义,也可能发生这种情况。就我而言,这是一个布尔标志,像这样的:

A类:

#import "MyATableViewController.h" 

@implementation MyATableViewController 

@synthesize someVariable; 

BOOL MY_FLAG = YES; 
... 

B类:

#import "MyBTableViewController.h" 

@implementation MyBTableViewController 

@synthesize someVariable; 

BOOL MY_FLAG = YES; 
... 

我不得不在第二类改变常数定义:

... BOOL MY_B_FLAG = YES; ... 
3

我有这个问题。我解决它。

因为我在导入视图控制器时犯了错误。

错误: “视图 - 控制” #进口

后来我编辑:`#进口 “视图 - 控制^h。”

只有我改变视图 - 控制的扩展。

1

如果有多个类股同名这种错误会

0

我不得不满足同样的问题,我解决了这个问题。 当我复制并粘贴我的视图和视图控制器与不同的名称,我得到了这个错误(在_temp dublicate sembol)。我通过更改常量名解决了这个错误。你也可以在实现之间移动你的常量。我的例子代码如下。我常用的名字是temp。

@implementation MyCombineSaveTableView 
{ 
    BOOL *pulltoRefResh; 
    NSString *currentElement; 
    int temp; 
    int User_ID; 
}