iOS 静态库制作❣进阶

如果没有看过 基础篇,从这里进入iOS 静态库制作❣基础篇。如果没有看过 中篇,从这里进入iOS 静态库制作❣中篇。提示:开源光荣 与学习静态库的制作没有任何关系。将自优秀代码开源的同志,都是好同志。

这一篇主要是介绍一种特殊情况的打包。有两个功能:功能1功能2,其中 功能2 是在 功能1 的基础上开发,现在我想将 功能2 打包,而不用将 功能1 打到这个静态包中。

想必很多人,都想在AFN的基础上做一层封装。那么问题来了,这个网络的二次封装是建立在 AFN 的基础上的,如果想将这个二次封装打包,而又不想将 AFN 的代码打进去,应该如何做呢?

一、创建项目

创建一个名叫 HttpManager 的项目。

二、核心代码

进入 HttpManager.h 文件,代码如下:

#import <Foundation/Foundation.h>

@interface HttpManager : NSObject

/**
 POST 请求

 @param url 链接
 @param params 参数
 @param success 成功回调
 @param failure 失败回调
 */
- (void)POST:(NSString *)url params:(NSDictionary *)params success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure;

@end

进入 HttpManager.m 文件,代码如下:

#import "HttpManager.h"
#import "AFNetworking.h"

@implementation HttpManager

/**
 POST 请求
 
 @param url 链接
 @param params 参数
 @param success 成功回调
 @param failure 失败回调
 */
- (void)POST:(NSString *)url params:(NSDictionary *)params success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure {
    // TODO: 1.基本的一些处理
    
    // TODO: 2.这里用到了 AFN 中的请求方法
}

@end

假装上面就是对 AFN 高大上的二次封装(实际上,可没有这么简单)。仅仅是上面的代码是会出错的。因为用到了 AFN ,但是没有引进 AFN 的代码。

三、引进 AFN 的代码

直接到这里将 AFN 的代码下载下来。找到 AFNetworking 目录。

AFNetworking

将其拖入到 HttpManager 的项目中。这里有一个很值得注意的地方:

不能选中 **Add to target**

你没有看错,这里是不能选中 Add to target的,因为我们的目的就是不希望将这部分打入包中的(你也可以选中试试看)。这样 HttpManager 项目就不会报错了。

三、打静态包前的配置

1、Build Active Architecture Only 全部设置成NO。
2、设置暴露文件

不用设置暴露文件

因为没有多余创建其它的文件,而是直接用HttpManager这个类。所以这里不用做任何的设置。在这里,你应该已经发现,没有与 AFN 相关的文件,这是对的。

四、开始编译

编译方式,与基础篇的相同。详情,请见iOS 静态库制作❣基础篇

五、找到编译结果

最终结果,如下:

最终结果

同样,将这个 HttpManager 文件拖入到项目中,就可以使用的。但是有一个前提的条件,这个项目必须要有 AFNetworking ,不管是直接拖入的,还是pod 进入的。

谢谢~

推荐阅读更多精彩内容