与cocoapods ios合作

时间:2013-11-19 10:17:05

标签: ios cocoapods

我知道cocoapod正在简化手动添加库的工作,或让开发人员专注于他的实际源代码。

但我的问题是,如果我只需要某些项目中的某些源文件,那么通过安装相同的cocoapod可以添加整个库吗? 就像我只需要Reachability类文件一样,为什么我应该采用整个AFNetworking

是不是会造成代码冗余或增加我的iPA尺寸或其他性能问题?

2 个答案:

答案 0 :(得分:10)

通常,在Objective-C中向项目添加静态库会将所有对象文件拉入生成的二进制文件,因为可可pod安装会将-ObjC标志添加到链接器设置中,并且如链接器手册中所述:

-ObjC        Loads all members of static archive libraries that implement
             an Objective-C class or category.

此标志包含用于解决链接类别的问题,因为默认情况下链接器不会包含仅包含结果二进制类别的对象文件。

因此,一般情况下,在通过CocoaPods向项目添加大型库时要小心。

答案 1 :(得分:7)

AFNetworking分为子规格,因此您应该只能通过以下方式获得可访问性部分:

pod 'AFNetworking/Reachability'

或者您可以获得一个不同的更集中的广告连播,search for reachability on cocoapods.org

就一般代码浪费而言:对于像AFNetworking这样的相对较小的库(源代码为270K),我不会太担心IPA的大小。在包含您不使用的代码方面,我猜您应该尝试找到最符合您需求的库。如果您可以在准确编写所需的网络代码之间做出选择,或者使用经过验证的框架,即使您不使用它,我也会采用框架