dydyld: Symbol not found: xxx问题解决

dydyld: Symbol not found: xxx问题解决_第1张图片
不想看到error

1. 问题产生:

在使用CocoaPods集成Dropbox后,在iOS9.0一下设备运行时报错:
dyld: Symbol not found: _OBJC_CLASS_$_NSURLQueryItem

2. 原因:

Dropbox SDK要求使用再iOS9.0+的系统上运行,我使用iOS7的系统运行,所以发生了crash。
根本原因:Dropbox SDK中使用了NSURLQueryItem类,该类是在iOS8.0之后才有的,所以会报Symbol not found。

修改前提条件:

我的app既要在iOS7的设备上正常运行,有需要在iOS9+的设备上用到DropBox相关功能。

别问我为什么还要支持iOS7,因为TMD...NND...%$#&!!!

3.解决方案:

对于这种情况,工程环境配置上其实可以改为按需引用相关类所在的framework:

1. 查一下NSURLQueryItem属于属于哪个framework (Foundation.framework);
2. 修改 Target ==> Build Phases ==> Link Binary With Libraries
中的Foundation.framework的Status为Optional;

类似的,以下报错均可以按照这种方法解决:

dyld: Symbol not found: _OBJC_CLASS_$_UIBlurEffect
将UIKit.framework的Status为Optional即可。

dyld: Symbol not found: ___NSArray0__
将CoreFoundation.framework的Status为Optional即可。
注:NSArray数组属于CoreFoundation.framework

dyld: Symbol not found: _OBJC_CLASS_$_SFSafariViewController
将SafariService.framework的Status为Optional即可。

注:该framework是在Cocoapods里使用的,
虽然工程配置的Link Binary原本是没有这个framework的,
但是仍然可以再添加一个SafariService.framework,
然后再设置它的Status为Optional仍然可以解决报错问题。

你可能感兴趣的:(dydyld: Symbol not found: xxx问题解决)