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安装第三方库。

创建桥接文件,本文不再阐述,具体请查看我的文章:

swift和OC的互相调用

在桥接文件中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工程中调用OC语言的库

创建swift工程

 
image.png

情况1️⃣(自动创建桥接文件的情况)

创建一个OC的语言文件

 
image.png

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

桥接头文件

此时自动创建了桥接头文件

 
image.png

(但是其中文件是空的。)

在其中引入需要桥接的OC文件。

 
image.png

(使用两种引入都行,选择其中一种)

可以在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+NiOS->Source->Header File文件。这个文件的命名规则最好是:"项目名+bridging+Header.h"

 
image.png

手动设置路劲

Swift Compiler - Code Generation->Objective-C Bridging Header,填写“项目名/桥接文件名”。

也可以直接将文件拖入。

OC工程中调用swift语言

创建一个OC项目

 
image.png

创建swift文件

 
image.png

(此时依旧会问是否创建头文件)

在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的第三方库的更多相关文章

  1. swift调用oc语言文件,第三方库文件或者自己创建的oc文件——简书作者

    Swift是怎样调用OC的第三方库的呢?请看下面详情: 情况一: 1.首先打开Xcode,iOS->Application->Single View Application, 选Next. ...

  2. Swift中的Masonry第三方库——SnapKit

    在OC开发时我常用一个名叫Masonry的第三方Autolayout库,在转Swift后发现虽然Swift可以混编OC,但总感觉有些麻烦,在Github上发现了这个叫做SnapKit的第三方库,发现使 ...

  3. [置顶] android调用第三方库——第四篇——调用多个第三方库

    0:前言: 在前面三篇中我们介绍了android调用第三方库的形式,在这一篇中我们介绍调用多个第三方库的Android.mk的写法,由于其他三篇介绍的很详细,这里只给出Android.mk的内容. [ ...

  4. Swift调用OC和C

    Swift文件:main.swift import Foundation //Swift调用C函数 desc1() //Swift调用OC //拿到OC类 var funcClass = Root() ...

  5. Swift和Objective-C混合编程——Swift调用OC

    在iOS应用的开发中.Swift必将代替OC,两者的趋势是"短期共存,长期代替".但曾经有太多的代码是用OC语言完毕的,而Swift的开发也从 OC中继承了非常多的特性.两者也是有 ...

  6. Swift中的Masonry第三方库——SnapKit

        在OC开发时我常用一个名叫Masonry的第三方Autolayout库,在转Swift后发现虽然Swift可以混编OC,但总感觉有些麻烦,在Github上发现了这个叫做SnapKit的第三方库 ...

  7. Swift 学习 用 swift 调用 oc

    开发过程中 很可能  把swift不成熟的地方用成熟的oc 代码来弥补一下 , 下面简单来学习一下,我也是照着视频 学习的 卖弄谈不上 就是一次学习笔记, 具体问题还是具体分析吧. 需求 给展出出来的 ...

  8. Swift基础之Swift调用OC语言文件使用步骤

    Swift语言中,有很多封装类并没有,如果需要使用到,就需要桥接OC语言中的类,这时候就需要使用桥接头文件,一下是使用的步骤: 创建一个Swift项目Demo,然后新建一个OC语言的文件 如图: 创建 ...

  9. OC中第三方库MJExtension的使用

    MJExtension是一套常用的"字典和模型之间互相转换"的框架,在项目中也使用过,现在记录一下.随着Swift的普及,在Swift中也有一个类似功能的框架HandyJSON 也 ...

随机推荐

  1. 通过SparkListener监控spark应用

    监控spark应用的方式比较多,比如spark on yarn可以通过yarnClient api监控.这里介绍的是spark内置的一种监控方式 如果是sparkStreaming,对应的则是stre ...

  2. 七 Hibernate5种查询检索方式,单表&多表

    Hibernate中提供了5种查询方式: OID查询 对象导航查询 HQL检索 QBC检索 SQL检索 OID检索: Hibernate根据对象的oid(表中主键) 使用get方法   Custome ...

  3. 变相降价的iPhone,能挽救苹果在中国的命运吗?

    人无千日好,花无百样红.当年iPhone的横空出世不仅开辟了智能手机时代,还间接导致了诺基亚.黑莓等手机品牌的没落.十余年来,苹果凭借iPhone活得风光无限,并成为全球首个市值超万亿美元的公司.但进 ...

  4. 使用Ghidra分析phpStudy后门

    一.工具和平台 主要工具: Kali Linux Ghidra 9.0.4 010Editor 9.0.2 样本环境: Windows7 phpStudy 20180211 二 .分析过程 先在 Wi ...

  5. Python 3.8 新功能【新手必学】

       Python 3.8 是 Python 编程语言的最新主要版本, 它包含许多新功能和优化.   Python 3.8 Python 3.8 的一些新功能包括: 1. 海象运算符   PS:很多人 ...

  6. PHP时间格式

    date 用法: date(格式,[时间]); 如果没有时间参数,则使用当前时间.格式是一个字符串,其中以下字符有特殊意义: Y - 年,四位数字; 如: "1999" y - 年 ...

  7. JavaScript 的一些SAO操作

    IE判断检测 jQuery 在 1.9 版本之前,提供了一个浏览器对象检测的属性 .browser 的替代方案.于是各种利用 IE bug 的检测方法被搜了出来: // IE 678 最短方法 var ...

  8. DevOps - 生命周期

    章节 DevOps – 为什么 DevOps – 与传统方式区别 DevOps – 优势 DevOps – 不适用 DevOps – 生命周期 DevOps – 与敏捷方法区别 DevOps – 实施 ...

  9. P1011 A+B 和 C

    转跳点:

  10. netty权威指南学习笔记二——netty入门应用

    经过了前面的NIO基础知识准备,我们已经对NIO有了较大了解,现在就进入netty的实际应用中来看看吧.重点体会整个过程. 按照权威指南写程序的过程中,发现一些问题:当我们在定义handler继承Ch ...