Swift - Framework的制作与使用教程2(引用第三方库

82 篇文章 1 订阅
在我们创建的自定义框架中,也是可以再引用其它第三方的框架库。本文以实现一个网络定时请求的  framework 为例,其内部使用到了  Alamofire。关于  Alamofire 的详细介绍,可以参考我之前写的这篇文章: Swift - HTTP网络操作库Alamofire使用详解1(配置,以及数据请求)

一、framework的制作(引用第三方库 )

1,创建framework工程项目

(1)新建项目的时候选择“ Cocoa Touch Framework”。
原文:Swift - Framework的制作与使用教程2(引用第三方库)

(2)项目名就叫做“ HanggeSDK”。
原文:Swift - Framework的制作与使用教程2(引用第三方库)

(3)为了让制作出的  framework 在低版本的系统上也能使用,可以在“ General”->“ Deployment Info”里设置个较低的发布版本。(这里选择  9.0
原文:Swift - Framework的制作与使用教程2(引用第三方库)

(4)由于框架中需要使用  Alamofire ,这里将  Alamofire.xcodeproj  添加到项目中来
原文:Swift - Framework的制作与使用教程2(引用第三方库)

(5)  General  ->  Linked Frameworks and Libraries  项,把  iOS  版的  framework  添加进来:  Alamofire.framework
原文:Swift - Framework的制作与使用教程2(引用第三方库)

(6)创建一个功能实现类( HttpScheduledTask.swift),代码如下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import  Foundation
import  Alamofire
 
public  class  HttpScheduledTask  {
     //请求地址
     var  url: String ?
     
     //请求参数
     var  params:[ String : Any ]?
     
     //定时请求时间间隔
     var  timeInterval: TimeInterval !
     
     //请求响应回调
     var  callBack:( Data )-> Void
     
     //定时任务Timer,用于停止定时任务
     var  timer: Timer ?
     
     //初始化。参数默认为空,时间间隔默认为1秒,默认没用回调处理。
     public  init (url: String , params:[ String : Any ] = [:],timeInterval: TimeInterval  = 1,
                 callBack: @escaping  ( Data )-> Void  = {_  in }) {
         self .url = url
         self .params = params
         self .timeInterval = timeInterval
         self .callBack = callBack
     }
     
     //启动任务
     public  func  start(){
         //如果之前有定时任务,先停止
         self .timer?.invalidate()
         self .timer =  Timer .scheduledTimer(timeInterval:  self .timeInterval,
                                           target: self ,selector:#selector(onTime),
                                           userInfo: nil ,repeats: true )
     }
     
     //时间到,开始请求
     @objc  func  onTime() {
         Alamofire .request( self .url!, parameters: params).response { (response)  in
             if  let  data = response.data {
                 //调用回调函数
                 self .callBack(data)
             }
         }
         
     }
     
     //停止任务
     public  func  stop() {
         self .timer?.invalidate()
     }
}


2,生成framework库文件

生成的  framework 文件是分为模拟器使用和真机使用这两种。
(1)发布编译目标选择“ Generic iOS Device”后,使用快捷键  command+B 或者点击菜单  Product Build 编译生成的是真机调试使用的  framework
原文:Swift - Framework的制作与使用教程2(引用第三方库)

(2)如果发布编译目标选择的是模拟器,那么编译出来的模拟器使用的  framework
原文:Swift - Framework的制作与使用教程2(引用第三方库)

(3)编译后右键点击项目中生成的  framework,选择“ Show in Finder”,即可打开  framework 所在的文件夹。
原文:Swift - Framework的制作与使用教程2(引用第三方库) 原文:Swift - Framework的制作与使用教程2(引用第三方库)

(4)访问上级文件夹,可以看到两种类型的  framework  分别放在两个不同的文件夹下。
原文:Swift - Framework的制作与使用教程2(引用第三方库)

二、framework的使用

1,引入framework

(1)将生成的  HanggeSDK.framework 添加到项目中来。(注意:要根据你是使用真机调试还是模拟器调试选择对应的  framework
原文:Swift - Framework的制作与使用教程2(引用第三方库)

(2)接着在“ General”->“ Embedded Binaries”中把  HanggeSDK.framework 添加进来。
原文:Swift - Framework的制作与使用教程2(引用第三方库)

(3)除了将我们自定义类库  HanggeSDK 引入外,还需要将其依赖库也给引入进来( Alamofire)。
原文:Swift - Framework的制作与使用教程2(引用第三方库)
否则运行后会报“ dyld: Library not loaded: @rpath/Alamofire.framework/Alamofire”错误。
原文:Swift - Framework的制作与使用教程2(引用第三方库)

2,使用样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import  UIKit
import  HanggeSDK
 
class  ViewController UIViewController  {
 
     override  func  viewDidLoad() {
         super .viewDidLoad()
         
         //新建一个定时请求任务
         let  task1 =  HttpScheduledTask (url:  "https://httpbin.org/get" ){
             data  in
             if  let  utf8Text =  String (data: data, encoding: .utf8) {
                 print ( "----- 获取到的数据 -----" )
                 print (utf8Text)
             }
         }
         //启动定时任务
         task1.start()
         //停止定时任务
         //task1.stop()
         
         /**** 带参数的定时请求任务 *****/
         let  task2 =  HttpScheduledTask (url:  "https://httpbin.org/get" ,
                                       params: [ "name" : "hangge.com" "password" :123],
                                       timeInterval: 10) { (data)  in
             //处理响应
         }
         //启动定时任务
         //task2.start()
         //停止定时任务
         //task2.stop()
     }
 
     override  func  didReceiveMemoryWarning() {
         super .didReceiveMemoryWarning()
     }
}
运行效果如下:
原文:Swift - Framework的制作与使用教程2(引用第三方库)

源码下载: HanggeSDK+Sample.zip

三、将第三方库也打包进framwork中

上面的样例可以看到,如果我们自定义的  framework  用到了第三方库。那么在使用这个自定义的  framework  的项目中,也需要将这些第三方依赖库给引用进来。
如果嫌麻烦的话,我们也可以把第三方依赖库一起编译打包进  framewrok  中。
 (1)点击“ Build Phases”中左上角的加号,选择“ New Copy Files Phase”。
原文:Swift - Framework的制作与使用教程2(引用第三方库)

(2)在新建的“ Copy Files”中,将  Destination 属性选择“ Framework”,添加类库( Alamofire)。“ Copy only when installing” 与 “ Code Sign On Copy” 都不勾选。
原文:Swift - Framework的制作与使用教程2(引用第三方库)

(3)重新编译生成新的  HanggeSDK.framework,可以看到这个新的  framework 体积比原来大很多,说明  Alamofire 也被一同打包进了了。
原文:Swift - Framework的制作与使用教程2(引用第三方库)原文:Swift - Framework的制作与使用教程2(引用第三方库)

(4)我们工程使用这个新的  framework 时,就不需要再引入  Alamofire 了。

原文出自: www.hangge.com   转载请保留原文链接: http://www.hangge.com/blog/cache/detail_1426.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值