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