iOS开发小笔记 | 关于编译报duplicate symbol的处理方法

iOS开发小笔记 | 关于编译报duplicate symbol的处理方法_第1张图片
允儿

故事回放:

我正在开开心心的敲代码,写好两个文件后,编译,直接报错。截图如下:


iOS开发小笔记 | 关于编译报duplicate symbol的处理方法_第2张图片

关于duplicate symbol我还是比较熟悉的,毕竟刚接手这个项目的时候,项目中同时存在友盟分享和shareSDK,报的就是这种问题。那时候的处理方式也很简单,删除其中一种即可。
但这次不一样,Xcode直接把矛头指向我写的代码文件。我很疑惑,仔细看了看新写的两个文件,没毛病啊。然后我把这两个文件删除再编译,通过。说明确实是这两个文件导致的编译不通过。
这两个文件是这样的:
.h文件,是一个cell:

#import 
#import "CQPointCommonGoodsModel.m"

@interface CQPointGoodsCell : UITableViewCell

@property (nonatomic,strong) CQPointCommonGoodsModel *model;

@end

.m文件未做其他处理,就是创建后的样子。

然后我把.h文件处理了一下,变成这样:

#import 
//#import "CQPointCommonGoodsModel.m"

@interface CQPointGoodsCell : UITableViewCell

//@property (nonatomic,strong) CQPointCommonGoodsModel *model;

@end

将model相关的两行代码注释掉后,编译通过。
还不要我重写set方法了,有趣。

仔细看看我注释的那两行代码,心细的同学可能已经发现了:

#import "CQPointCommonGoodsModel.m"

import的是.m文件不是.h文件。

iOS开发小笔记 | 关于编译报duplicate symbol的处理方法_第3张图片
优秀得感动了自己

不得不说,这种由于疏忽造成的问题是最致命的,也是最难排查的。

总结:

如果编译出现duplicate symbol错误,除了排查是否导入重复的框架或库,也要检查下是否import了.m文件。

你可能感兴趣的:(iOS开发小笔记 | 关于编译报duplicate symbol的处理方法)