https://www.jianshu.com/p/6be32a047ca7

原文地址: Objective-C 和 Swift 第三方库使用

注1:文章写于2016年9月,(swift 3.0、Xcode 8)不同版本可能不同,仅作参考。
注2:个人总结出的最好方式是使用cocoapods,没有用过的请参看之前的文章。

OC 第三方框架以 AFNetworking 3.1.0 为例。
Swift 第三方框架 Alamofire 4.0.0 为例。

一、通过cocopods导入项目:

(1)搜索第三方库
(2)创建Podfile文件
(3)编辑Podfile文件
(4)导入第三方库到工程

1、第三方库是swift库,导入到swift项目。

用到的文件中需要:import Alamofire

2、第三方库是swift库,导入到OC项目。

不考虑

3、第三方库是OC库,导入到swift项目。

用到的文件中需要:import AFNetworking

4、第三方库是OC库,导入到OC项目。

用到的文件中需要:#import "AFNetworking.h"

二、直接将文件粘贴到项目:

测试发现,有些第三方库拖进swift项目目录里直接可以用,比如IQKeyboardManagerSwift等。

如果第三方库是swift,不需要import,直接可用;如果第三方库是OC,在Bridge头文件中添加。

原因分析:

说明IQKeyboardManagerSwift里面使用的方法都是在foundation和uikit框架下的,不需要调用其他库的方法,直接拖进工程,你可以看做就是自己写的一些类而已。Alamofire框架用到了其他的库内容,需要导入这些库。

你可以用import做关键字搜索一下这些库里面导入的头文件,IQKeyboardManagerSwift只使用foundation和uikit,而Alamofire不是的

使用cocoapods来安装,一是可以方便管理第三方库,如果这些库有更新的话,可以直接pod update,另一方面是cocoapods在安装库的时候会自动帮你导入使用到的库文件,也就是避开了你自己导入的这个环节而已

1、第三方库是swift库,粘贴到swift项目。

参考下面的A
(1)在项目目录下使用git语句:git submodule add https://github.com/Alamofire/Alamofire.git, 或者去官网上下载下来将整个文件夹放到项目目录下
(2)将下载到本地的文件夹中Alamofire.xcodeproj 文件拖到项目中去
(3)General->Embedded Binaries-> + -> iOS -> Add
在需要用到的swift文件中:import Alamofire

2、第三方库是swift库,粘贴到OC项目。

不考虑

3、第三方库是OC库,粘贴到swift项目。

A. 添加库方法
(1)在项目目录下使用git语句:git submodule add https://github.com/AFNetworking/AFNetworking.git,或者 去官网上下载下来将整个文件夹放到项目目录下
(2)将下载到本地的文件夹中AFNetworking.xcodeproj 文件拖到项目中去
(3)General->Embedded Binaries-> + -> iOS -> Add

 
示例.jpg

在需要用到的swift文件中:import AFNetworking

B. 在A的基础上(或者用cocoapods导入OC框架后),创建Bridge头文件,这样不需要每次写impot就可以整个项目使用。
(1)创建一个普通的头文件,一般命名为项目名-Bridge-Header.h
(2)在头文件里面编写:

#ifndef Swift_test_Bridging_Header_h
#define Swift_test_Bridging_Header_h #import <AFNetworking/AFNetworking.h> #endif

(3)添加头文件到Build Settings -> Objective-C Bridging Header

==>快捷方法:
新建一个OC文件,选择自动创建头文件,然后在头文件里面编写 如上内容,删除OC文件。
Build Settings -> Objective-C Bridging Header 会自动添加。

 
示例2.jpg
4、第三方库是OC库,粘贴到OC项目。

用到的文件中需要:#import "AFNetworking.h"

三、import时<>括号和""的区别

(1)在项目中导入库或者类的时候经常看到" #import <库名>" 或者 “#import '类名.h'" .
(2)""表示从当前项目路径开始寻找文件,如果找不到,则到系统(项目)中配置的头文件路径去找;
(3)<>表示直接到系统(项目)中配置的头文件路径去找。

作者:寒桥
链接:https://www.jianshu.com/p/6be32a047ca7
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

最新文章

  1. 【leetcode❤python】 278. First Bad Version
  2. 更新lispbox中的ccl和slime版本
  3. MongoDB操作
  4. mysql 存储过程中limit
  5. &quot;System.Web&quot; 中不存在类型或命名空间
  6. 网络流——增广路算法(dinic)模板 [BeiJing2006]狼抓兔子
  7. 学习android内核 -- 内存管理相关
  8. DataGirdView 设置单元格居中
  9. Asp.net MVC的Model Binder工作流程以及扩展方法(1)
  10. ES6的generator函数
  11. Vue.js和jQuery混合使用的一点注意事项
  12. android6.0SDK 删除HttpClient的相关类的解决方法
  13. 从 RegExp 构造器看 JS 字符串转义设计
  14. ansible基础-playbook剧本的使用
  15. 删除office拥有多个都需要激活的授权信息
  16. 赵雅智_Swift(4)_断言
  17. 线性素数筛 ACM-ICPC 2018 南京赛区网络预赛 J Sum
  18. webpack 3 升级到 webpack 4,遇到问题解决
  19. TCP粘包、拆包
  20. java常用设计模式七:装饰模式

热门文章

  1. Windows驱动开发-内核常用内存函数
  2. vs2010编译C++ 结构体
  3. VUE - 路由跳转时设置动画效果
  4. [Codeforces]1263E Editor
  5. JS: 子项可以来回交换的两个下拉列表
  6. mysql 视图入门
  7. MyBatis笔记(一)
  8. BottomTabBar 套用 recycleview出错问题
  9. 四、Vue过渡与动画、过渡css类名、自定义指定、过滤器
  10. maven package跳过测试