我知道cocoapod正在简化手动添加库的工作,或让开发人员专注于他的实际源代码。
但我的问题是,如果我只需要某些项目中的某些源文件,那么通过安装相同的cocoapod可以添加整个库吗?
就像我只需要Reachability
类文件一样,为什么我应该采用整个AFNetworking
是不是会造成代码冗余或增加我的iPA尺寸或其他性能问题?
答案 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的大小。在包含您不使用的代码方面,我猜您应该尝试找到最符合您需求的库。如果您可以在准确编写所需的网络代码之间做出选择,或者使用经过验证的框架,即使您不使用它,我也会采用框架