前言
相信作为 iOS 开发的你,在开发中可能不止一次遇到这个错误,我暂且称之为终极错误,很多时候真是心神交瘁,想死的心都有了,但又有什么办法呢?不解决,问题终究还是那里,我们程序员就是来解决问题的。
其实这个问题,网上有很多种说法,各种解决方法,大概如下:
- 文件或类重复
- 错误信息中出现了某个类的名字,去原文件中看看#import了哪些第三方库,把这些库挨个注释排除,找到出错的那个库,然后按照官方提供的步骤重新添加一遍。
(如果用 Cocoa Pods 不要相信,没有类似问题,百分九十以上的问题就是自己项目代码或文件的问题,如果没有用 Cocoa pods 可以一试,排查一下,这是一个繁琐的过程,需要耐心)
- 错误信息中出现了某个类的名字,去原文件中看看#import了哪些第三方库,把这些库挨个注释排除,找到出错的那个库,然后按照官方提供的步骤重新添加一遍。
- SVN 或 Git 忽略了某些文件,如.o 等文件没能update下来,查看.o文件可能是红色的,可以重新添加或者修改 SVN/git 的忽略设置
- 把.a文件删除再重新拖到项目中解决问题
- 可能重复添加了文件(也可能没勾选 Copy items if neded 这个选项),建议删除后重新添加
- ”Build Settings”->”Enable Bitcode”设置为NO ,因为有些SDK不支持Bitcode
- 可能在引用的时候 可能写的是#import "XXXXX.m" ,如果是改为#import "XXXXX.h" (几率很小,即便是有也会在导入的地方报错的)
- 可能你导入的SDK只能在真机下才能运行,模拟器会报错!(遇见过)
- 一个类中自定义创建的父类没有implementation部分,在此基础上继承的子类就报这样的错误了
- 在不同的地方命名了相同的静态变量,不过这个真机调试不报错,模拟器运行的时候报错了。
我想说的是:
出现这种错误本质上就是引用的问题,文件或类没有引用上,Xcode 找不到了所以就会报这样的错误,出现这种错误不要盲目的去找,先想可能是那些地方,有针对性的耐心去查找、排查多半是自己代码或文件引用的问题,另外
1480 duplicate symbols for architecture arm64
这个错误的数量不用关心,其中可能有出错的类或文件,也可能没有。
我本次遇到的问题是这样的:(仅供参考,低级错误,不值得一提)
Xcode 错误截图
错误信息.pngld: 1480 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我来说下我的错误:
再三核对项目文件类,检查了项目无数次以后,在一个创建的 .h 头文件中找到了罪魁祸首,有许多定义的 const 常量:
NSString *const IDBSuccess = @"0";
NSString *const IDBFail = @"-1";
这样在 .h 中编译这个文件是不会报错的,但是就是运行不起来,语法貌似没错误!!为什么呢?相信熟悉 const 的小伙伴都知道,只怪道行太浅只有在 .m 中赋值,没有在 .h 中定义。
网友评论