Objective-C和Swift混编
- yeniugo
- 4月, 11, 2016
- iOS
- No Comments
首先,混编这里分为两种情况分别说明,一种是Objective-C项目中添加Swift代码,一种是Swift项目添加Objective-C代码。
Objective-C 项目 添加 Swift 代码
Objective-C 调用 Swift
第一次添加一个swift
文件的时候,xcode
会问开发者要不要添加一个bridge
,我们需要添加这样一个桥接。选择是就好了。然后会生成一个"ProductName"+"-Bridging-Header.h"
。
在Swift类中添加如下代码
import Foundation
class TestSwift: NSObject {
func test() -> String {
return "test";
}
}
检查Build Setting
,如图所示
这里有两个文件名,一个是上面说的一个,一个是"ProductName"+"-Swift.h"
。这个文件名就是在需要调用Swift
文件的时候引用的头文件,编译器会自动处理,添加或者删除Swift
类的时候,编译器会自动处理此文件。
ViewController.m
在调用Swift
类的时候的代码
#import "ViewController.h"
#import "OCAddSwift-Swift.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
TestSwift *test = [[TestSwift alloc] init];
NSString *str = [test test];
NSLog(@"%@",str);
[test testNew];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Swift 调用 Objective-C 代码
在"ProductName"+"-Bridging-Header.h"
中添加 Swift
需要调用的Objective-C
头文件。这里添加的是TestData.h
。
import Foundation
class TestSwift: NSObject {
func test() -> String {
return "test";
}
func testNew() {
let test1 = TestData();
print(test1.testNumber);
}
}
Swift 项目调用 Objective-C 代码
Swift 调用 Objective-C 代码
第一次添加一个Objective-C
文件的时候,xcode
会问开发者要不要添加一个bridge
,我们需要添加这样一个桥接。选择是就好了。然后会生成一个"ProductName"+"-Bridging-Header.h"
。
桥接形式如上面的 swift
调用 Objective-C
一致。链接
Objective-C 调用 Swift
这里有两个文件名,一个是上面说的一个,一个是"ProductName"+"-Swift.h"
。这个文件名就是在需要调用Swift文件的时候引用的头文件,编译器会自动处理,添加或者删除Swift类的时候,编译器会自动处理此文件。
调用方式和上面的 Objective-C
调用 Swift
一致。链接