iOS 静态库制作❣进阶

作者: CoderHG | 来源:发表于2017-05-30 18:58 被阅读202次

    如果没有看过 基础篇,从这里进入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 进入的。

    谢谢~

    相关文章

      网友评论

        本文标题:iOS 静态库制作❣进阶

        本文链接:https://www.haomeiwen.com/subject/vlvrfxtx.html