在swift调用OC的第三方库
https://www.jianshu.com/p/4799ac1d7dce
2017.06.02 23:55* 字数 275 阅读 1619评论 0喜欢 3
环境:xcode 8.3.2
系统: MAC OX
方法:使用桥接文件进行桥接,进行使用。
具体过程
本文以现今比较流行的AFNetworking作为例子。现今只有OC库。
pod的安装不再阐述。
1️⃣创建一个示例工程:TestAFNetWorkingInSwift
2️⃣进入项目的根目录,使用命令pod init初始化一个Profile文件,并做如下配置:
#使用3.1.0版本
platform :ios, '8.0'
target 'TestAFNetWorkingInSwift' do
use_frameworks!
pod 'AFNetworking', '~> 3.1.0'
target 'TestAFNetWorkingInSwiftTests' do
inherit! :search_paths
pod 'AFNetworking', '~> 3.1.0'
end
target 'TestAFNetWorkingInSwiftUITests' do
inherit! :search_paths
pod 'AFNetworking', '~> 3.1.0'
end
end
3️⃣在项目根目录使用命令pod install安装第三方库。
创建桥接文件,本文不再阐述,具体请查看我的文章:
在桥接文件中import第三方库的.h文件即可。
特别注意:
在桥接头文件中有两种方式引入第三方库
使用时请先编译一下工程,否则可能导致无法import
方法1️⃣:
//在头文件中使用如下引入:
#import <AFNetworking/AFNetworking.h>
当使用以上引入方式时,使用时必须import AFNetworking
import UIKit
import AFNetworking
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let _: AFURLSessionManager = AFURLSessionManager.init(sessionConfiguration: URLSessionConfiguration.default)
return true
}
方法2️⃣:
//在头文件中使用如下引入:
@import AFNetworking;
使用以上方式引入时,可以不需要import
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let _: AFURLSessionManager = AFURLSessionManager.init(sessionConfiguration: URLSessionConfiguration.default)
return true
}
swift工程中调用OC语言的库
创建swift工程

情况1️⃣(自动创建桥接文件的情况)
创建一个OC的语言文件

系统提示是否需要一个桥接头文件,因为系统的暂时还没有。选择创建。
桥接头文件
此时自动创建了桥接头文件

(但是其中文件是空的。)
在其中引入需要桥接的OC文件。
(使用两种引入都行,选择其中一种)
可以在swift中直接调用了
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let obj : NewObject=NewObject.init()
return true
}
(这样创建桥接文件,系统里已经帮我们设置好了路径。检查这个路径:工程->TARGETS, 在输入框里输入bridging,你会看桥接路径)
情况2️⃣(手动创建桥接文件的情况)
手动创建一个.h文件(名字固定)
创建一个,Command+N。iOS->Source->Header File文件。这个文件的命名规则最好是:"项目名+bridging+Header.h"
手动设置路劲
Swift Compiler - Code Generation->Objective-C Bridging Header,填写“项目名/桥接文件名”。
也可以直接将文件拖入。
OC工程中调用swift语言
创建一个OC项目

创建swift文件
(此时依旧会问是否创建头文件)
在OC中使用swift只需要引入头文件即可
#import "AppDelegate.h"
#import "OC中调用swift-swift.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NewObject*obj=[[NewObject alloc]init];
return YES;
}
#import "OC中调用swift-swift.h"其中OC中调用swift是项目名字-Swift.h是固定写法。(其中项目名中如果有中划线-在import变为下划线_)
作者:Better_奔
链接:https://www.jianshu.com/p/7ee9cb2acccf
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
在swift调用OC的第三方库的更多相关文章
- swift调用oc语言文件,第三方库文件或者自己创建的oc文件——简书作者
Swift是怎样调用OC的第三方库的呢?请看下面详情: 情况一: 1.首先打开Xcode,iOS->Application->Single View Application, 选Next. ...
- Swift中的Masonry第三方库——SnapKit
在OC开发时我常用一个名叫Masonry的第三方Autolayout库,在转Swift后发现虽然Swift可以混编OC,但总感觉有些麻烦,在Github上发现了这个叫做SnapKit的第三方库,发现使 ...
- [置顶] android调用第三方库——第四篇——调用多个第三方库
0:前言: 在前面三篇中我们介绍了android调用第三方库的形式,在这一篇中我们介绍调用多个第三方库的Android.mk的写法,由于其他三篇介绍的很详细,这里只给出Android.mk的内容. [ ...
- Swift调用OC和C
Swift文件:main.swift import Foundation //Swift调用C函数 desc1() //Swift调用OC //拿到OC类 var funcClass = Root() ...
- Swift和Objective-C混合编程——Swift调用OC
在iOS应用的开发中.Swift必将代替OC,两者的趋势是"短期共存,长期代替".但曾经有太多的代码是用OC语言完毕的,而Swift的开发也从 OC中继承了非常多的特性.两者也是有 ...
- Swift中的Masonry第三方库——SnapKit
在OC开发时我常用一个名叫Masonry的第三方Autolayout库,在转Swift后发现虽然Swift可以混编OC,但总感觉有些麻烦,在Github上发现了这个叫做SnapKit的第三方库 ...
- Swift 学习 用 swift 调用 oc
开发过程中 很可能 把swift不成熟的地方用成熟的oc 代码来弥补一下 , 下面简单来学习一下,我也是照着视频 学习的 卖弄谈不上 就是一次学习笔记, 具体问题还是具体分析吧. 需求 给展出出来的 ...
- Swift基础之Swift调用OC语言文件使用步骤
Swift语言中,有很多封装类并没有,如果需要使用到,就需要桥接OC语言中的类,这时候就需要使用桥接头文件,一下是使用的步骤: 创建一个Swift项目Demo,然后新建一个OC语言的文件 如图: 创建 ...
- OC中第三方库MJExtension的使用
MJExtension是一套常用的"字典和模型之间互相转换"的框架,在项目中也使用过,现在记录一下.随着Swift的普及,在Swift中也有一个类似功能的框架HandyJSON 也 ...
随机推荐
- 阿里云服务器win2003下iis整合tomcat共享80端口
阿里云服务器win2003下iis整合tomcat共享80端口 很多机器都用tomcat跟IIS部署不同网站.最近买了阿里云的服务器.于是也想玩一下.网上百度了很多方法.但是都有缺陷说的不是很清楚.通 ...
- 有时间会做系列一(Dice)
题目大意:给n个骰子的每面安排点数,第i个骰子有a[i]面,a[i]和为m,点数范围从1到m,不重复.问怎么安排掷骰子的点数和的期望最大.输出期望和每个骰子的点数(按骰子输入顺序). 思路: EX=x ...
- 收藏了一篇很有用的博客 “npm的安装教程”
暂时贴上这一篇博客的地址,感谢原作者 https://www.cnblogs.com/goldlong/p/8027997.html 使用之前,我们先来掌握3个东西是用来干什么的. npm: Node ...
- 查看 Secret【转】
可以通过 kubectl get secret 查看存在的 secret. 显示有两个数据条目,kubectl describe secret 查看条目的 Key: 如果还想查看 Value,可以用 ...
- HiBench成长笔记——(2) CentOS部署安装HiBench
安装Scala 使用spark-shell命令进入shell模式,查看spark版本和Scala版本: 下载Scala2.10.5 wget https://downloads.lightbend.c ...
- 看雪hello
在看雪做了一道题目很简单,但是还是记录一下自己的学习. 用ida打开,然后shift+F12查看 这里可以看到基本的结构,转到pass查看 发现ATA XREF: sub_401770+Bo打开这里 ...
- RAM和ROM的区别
区别如下: 1.概念 RAM(random access memory)即随机存储内存,这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序.ROM(Read-Only Memory)即 ...
- Tips for traing DNN
1. 一般的机器学习方法不会在train好的模型上检查training data的结果,因为DNN在training data上都没有办法获得很好的正确率, 所以要先回头看一下要对模型做什么修改, ...
- UVA - 10891 Game of Sum (区间dp)
题意:AB两人分别拿一列n个数字,只能从左端或右端拿,不能同时从两端拿,可拿一个或多个,问在两人尽可能多拿的情况下,A最多比B多拿多少. 分析: 1.枚举先手拿的分界线,要么从左端拿,要么从右端拿,比 ...
- 小程序分享报错 Cannot read property 'apply' of null;at page XXX onShareAppMessage function
Cannot read property 'apply' of null;at page XXX onShareAppMessage function 然后看了下自己的代码,分享按钮在子组件里, at ...