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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。