duplicate:重复的,复制的
symbols:符号
出现的原因:
1.工程中重复倒入某一类或文件,这一般出现在你添加第三方库的时候比较多,在不知道的情况下又导入了一次相同的类。
2.就是倒入类的时候,引用的是.m而不是.h
3.项目中用了一个 C 语言的枚举类型定义方式,会导致重复闯将
4.项目中使用c的时候,参数声明使用const
个人认为,因为const声明的是常量,static声明的是静态变量(只声明一次),所以我们在引用的时候,引用一次是没问题的,而引用多次,const声明的对象,会多次创建,从而导致项目中出现重复引用错误的情况。
解决方法:
我们可以根据错误中提示的类去找。一般都可以解决
可以考虑以下原因:
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,也会出现这种问题。如果不能修改第三方的库代码,只能修改我信自己的代码了。