ObjC 类别不 link 到 iOS7

ObjC Category doesn't link to iOS7

我将 SDWebImage 与 CocoaPods 一起使用,我正在开发的应用程序必须支持 iOS7。

在使用 CocoaPods 安装 SDWebImage 4.0.0 版后,我将其导入 class 和 #import <SDWebImage/UIImageView+WebCache.h>

我使用类别的方法之一 sd_setImageWithURL: 来异步下载图像。

这在 iOS8-10 上运行良好。但出于某种原因(仅在 iOS7 上),应用程序崩溃并提示 sd_setImageWithURL: 是无法识别的选择器。

为什么类别无法仅在一个 OS 上正确加载?这对我来说根本没有任何意义。 :/

更新: 我 运行 对项目进行了分析,我注意到了这个警告:

ld: warning: ignoring file <path/to/file>/libSDWebImage.a, file was built for archive which is not the architecture being linked (armv7): <path/to/file>/libSDWebImage.a

(路径真长,我换成<path/to/file>)

正如我所怀疑的那样,当 运行 在较新版本的 iOS 上时,此警告不会出现,它也使用不同的架构,arm64。

因此,库 libSDWebImage.a 似乎正在为 arm64 构建。我该怎么办?

我在 Build Settings 中将 Build Active Architecture Only 设置为 NO,然后按照此处答案的建议执行 "deep clean":

这似乎解决了我的问题。