【IOS平台篇】
1.
1
2
3
4
|
<span style= "font-size: 16px;" >duplicate symbol _OBJC_METACLASS_$_DMSDWebImagePrefetcher in: /Users/admin/Library/Developer/Xcode/DerivedData/BankFinder-fqgijokhpyhxxycxegilsfupadsm/Build/Intermediates/BankFinder.build/Release-iphoneos/BankFinder.build/Objects-normal/armv7/DMSDWebImagePrefetcher.o /Users/admin/Desktop/OSChina/BankFinder/BankFinder/3rdLibs/DomobUniversal/libDomobThree.a(DMSDWebImagePrefetcher.o) </span> |
说明:出现duplicate symbol错误时不要慌,不外乎两种类型的错误:第三方静态lib文件之间冲突,这时候在错误描述里面会体现出来;第二种是源文件(.h .m)文件之间的冲突,这里包括工程中的源文件之间的冲突以及工程的源文件与lib库中的源文件冲突。此处属于第二种中的后者。
解决方法:根据错误提示,找到相应的文件,比如本处是DMSDWebImagePrefetcher.h(.m)在工程中出现多次,排查并删掉之
2.xcode编译失败,但是无任何出错的信息!不会有红色的编译错误提示!
说明:很奇特的情况,原因是当前的系统时间之后了一天,改回正常的时间就没问题了!
解决方法:修正系统时间
3.no matching function for call to ***(***表示函数名)
说明:从字面上理解很像是函数不存在,但其实是简单的一个错误。这种情况一般发生在oc调用c或者C++时,主要是由函数的参数不匹配引起的!
解决方法:修正函数的参数
4.自定义view,在loadNibNamed这句上始终crash掉,但是不显示异常原因!
说明:这种情况一般是因为xib的outlet连接错误,我这次遇到的错误就是本 来outlet链接了一个property,但是后面这个property名称被我改了,但是xib中没有做相应的更改,导致crash。如何确认是否正 确呢?在你的自定义xib的view上右键查看所有的outlet,如果有错就会有黄色标志。
解决方法:重新连接outlet
5.cocoaPod设置好PodFile并使用pod update或者pod install下载新的第三方库后,编译代码没问题,在运行时提示“unrecognized selector”错误。
说明:理论上看,所有流程都没问题,头文件也加了,库也加到工程了,command+方法也能正确找到对应头文件,但在运行时却出错。怀疑是工程设置的问题。最后参考SO的文章。去工程设置的Other Linker Flag中检查发现,新添加的库没有出现在里面,也就是说虽然库资源都有了,但是xcode无法加载。
比如,我们期望新增MMPlaceHolder库,但是在上述操作完成后设置是这样的:
解决方法:
6.error is Error Domain=NSURLErrorDomain Code=- 1000 "错误的 URL" UserInfo=0x8088e70 {NSUnderlyingError=0x8083680 "错误 的 URL", NSLocalizedDescription=错误的 URL
说明:在进行HTTP请求时出现的-1000的错误码,一般来说这个错误码并不是公司或者项目的后台返回来的,而是系统预定义的一种错误类型。原因是url中存在某些非法字符,比如空格以及中文字符。而空格很有可能在http://...的h前面。
因此如果你的代码没有容错能力,没有对url中的空格以及中文字符等非法字符进行检测,那当发送请求时就会出现这个错误。
解决方法:1、检查url是否有空格;2、检查是否含有中文。url中有中文是允许的,但是在发送前必须进行encoding编码(utf8)。而空格是必须要删除掉的
7.dyld: Symbol not found: _OBJC_CLASS_$_xxxxxxxxx
说明:今天遇到一个非常令人费解的崩溃bug,项目代码几年来一直正常运行,但是引入了其他组的某个SDK后在iOS6上崩溃,提示: dyld: Symbol not found: _OBJC_CLASS_$_NSURLSession 但 是经过查证,我们的源码以及该SDK都没有使用过NSURLSession这个类。apple文档中说这个类包含在 Foundation.framework中,但我们确实没有调用。但是把其他组的这个SDK删掉后又正常。这个问题目前还想不通,但是我们的解决方法如 下,其他类似问题也可以按照这种方式解决。
解决方法:在工程设置的Build Phases->Link Binary with Libraries中将xxxxxxx所在的库从required改为optional,比如我遇到的情况就是改Foundation.framework.