2012-02-07 220 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; 
}