介绍一下环境
Xcode 7.3.1
Mac OS X 10.11.5
iPhone 6 Plus
CocoaPods 1.0.1
首先看一下 Bug
报错的原因是 Undefined symbols for architecture arm64
看起来应该是 arm64 下没有链接到 AFNetworking 的 .a 文件
首先确认一下这个 .a 文件有没有存在,在 Products 文件夹里可以看到这个 libAFNetworking.a 是存在的,那么为什么 arm64 链接不到呢?
![](http://cocoa.qiniudn.com/image_%E8%AE%B0%E4%B8%80%E6%AC%A1%E8%AF%A1%E5%BC%82%E7%9A%84%20CocoaPods%20%E5%BC%95%E8%B5%B7%E7%9A%84%E9%93%BE%E6%8E%A5%E9%94%99%E8%AF%AF_lib_a.png)
各种 Clean、百度、Google 之后,并没有解决,但是每次重新 Clone 下来的工程(与原工程在不同的目录里),都是 OK 的,然后复制到原工程目录下,又会报出这个问题。
经过探索,终于找到了这个蛋疼的问题根源,并解决。
原因
TeamLeader 在配置 CocoaPods 的时候,用的是 0.39.0 的版本,我在我的分支里,升级了 CocoaPods 到1.0.1,在升级 CocoaPods 之后,改变了编译之后 .a 文件的目录
但是老版本的 libAFNetworking.a 依然存在,在链接时,首先找到了老的 libAFNetworking.a,并链接,导致新的 AFNetworking 有些类、变量,没有链接到。
![](http://cocoa.qiniudn.com/image_%E8%AE%B0%E4%B8%80%E6%AC%A1%E8%AF%A1%E5%BC%82%E7%9A%84%20CocoaPods%20%E5%BC%95%E8%B5%B7%E7%9A%84%E9%93%BE%E6%8E%A5%E9%94%99%E8%AF%AF_link_error.png)
升级之后的每次 Clean,都只会 Clean 到新目录下的文件,老的文件并不会被 Clean 到。
一个大写的尴尬😅
解决方案
1、给工程改个名字
2、给工程换个目录
3、删除这个工程对应的 Products 文件夹下的老文件,如果不知道这个文件夹在哪里,你可以右键单击 libAFNetworking.a,点击 Show in Finder,上一级就是你要找的位置了。