duplicate:重複的,複製的
symbols:符號
出現的原因:
1.工程中重複倒入某一類或文件,這一般出現在你添加第三方庫的時候比較多,在不知道的情況下又導入了一次相同的類。
2.就是倒入類的時候,引用的是.m而不是.h
3.項目中用了一個 C 語言的枚舉類型定義方式,會導致重複闖將
4.項目中使用c的時候,參數聲明使用const
2
個人認爲,因爲const聲明的是常量,static聲明的是靜態變量(只聲明一次),所以我們在引用的時候,引用一次是沒問題的,而引用多次,const聲明的對象,會多次創建,從而導致項目中出現重複引用錯誤的情況。
解決方法:
2
我們可以根據錯誤中提示的類去找。一般都可以解決
可以考慮以下原因:
1.引入頭文件時,由於疏忽,誤引入.m文件。這種一般仔細檢查一下出現問題的類的源文件就能發現。
例:ClassB.m 文件修改成下面這樣
#import "ClassB.h>"
#import "ClassA.m” // 這句話有問題
@implementation ClassB
@end
2.同一個類,實現兩次,即有兩個@implementation 。這種一般會有一個警告,也比較容易發現。
例:ClassB.m文件修改成下面這樣:
// ClassB.m
#import "ClassB.h”
@implementation ClassB
@end
@implementation ClassA
@end
3.工程文件,同一個類文件被引入了兩次,引起這種錯誤的原因大概有兩種:一是多人協作開發時,導致project文件合併衝突;二是同名文件不在同一目錄下,添加到工程時造成重複添加。 這種一般在文件視圖,用名字過濾器檢查一下就發現了。
4. Targets的Build Phase設置項裏,查看Complie Sources這一項,看看出現問題的類是不是有重複的,用文件名過濾也比較容易發現。這種問題一般也是多人協作開發時,project文件衝突導致的。發現這種問題,只要刪除就可以了。不過在解決問題過程中,刪除其中一個文件時,重複文件會自動全部刪除,所以還需要單獨添加一下。
5.如果工程中引用了第三方的庫,而恰好第三方的庫裏面有一個ClassA,也會出現這種問題。如果不能修改第三方的庫代碼,只能修改我信自己的代碼了。