【iOS沉思录】OC和Swift语言互调
这里通过一个简单的例子展示在Swift工程中OC和Swift之间的互调: 首先建立一个Swift工程,这里创建了一个Single View Application,工程名为SwiftBridge,并分别新建了一个新的名为SwiftClass的swift类文件和一个名为OCClass的OC类文件,创建第一个OC文件后会提示创建一个Bridging头文件,创建后就可以对两者进行桥接: 这里我们在ViewController.swift中调用OCClass类,同时在OCClass类中调用SwiftClass.swift。其中在swift中引用OC类时要在Bridging头文件中引入OC类的头文件(swift文件中没有头文件及其引用),而在OC中引用swift类时直接引入“SwiftBridge-swift.h”即可,不需要在Bridging头文件设置,其中“SwiftBridge”为工程名,该文件是隐藏的,对工程中所有swift类文件进行了向OC语言的翻译,从而在OC文件中可以像调用其他OC文件一样调用工程中的swift类文件。
import UIKit
class SwiftClass: NSObject {
func SwiftInstanceMethod() -> Void {
print("swift instance method!");
}
class func SwiftClassMethod() -> Void {
print("swift class method!");
}
}
/* OCClass.h */
#import <Foundation/Foundation.h>
@interface OCClass : NSObject
- (void)OCInstanceMethod;
+ (void)OCClassMethod;
@end
/* OCClass.m */
#import "OCClass.h"
#import "SwiftBridge-swift.h" /* 引入swift类头文件 */
@implementation OCClass
- (void)OCInstanceMethod {
/* 调用swift实例方法 */
SwiftClass *swiftc = [[SwiftClass alloc] init];
[swiftc SwiftInstanceMethod];
NSLog(@"oc instance method!");
}
+ (void)OCClassMethod {
/* 调用swift类方法 */
[SwiftClass SwiftClassMethod];
NSLog(@"oc class method!");
}
@end
/* SwiftBridge-swift.h */
#import "OCClass.h"
/* ViewController.swift */
import UIKit
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let occ = OCClass() occ.ocInstanceMethod() OCClass.ocClassMethod() } }
打印结果: swift instance method! 2017-04-12 12:40:39.657 SwiftBridge[3773:5420107] oc instance method! swift class method! 2017-04-12 12:40:39.657 SwiftBridge[3773:5420107] oc class method!
另外类似的也可以实现swift和C语言之间的互调。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |