Swift 是一种支持多编程范式和编译式的开源编程语言,主要用于开发 iOS,OS X 和 watchOS 应用程序,自苹果于2014年WWDC(苹果开发者大会)发布以后,自今已经更新到Swift 4.0以上,并日趋稳定,已经有越来越多的开发者和开项目使用swift来进行开发。由于项目需求在开发中,单独使用了一个模块来进行swift开发,之间花费了一些时间,所以便简单做了总结如下,后续会持续更新总结。
一、在Swift中调用OC
- 创建一个OC的项目
- 在OC项目中创建一个swift类(只会在第一个创建的时候提示你)
当你创建一个swift类的时候就会出现下图,会提示你是否创建一个桥接头文件,
创建桥接文件
点击 Create Bridging Header 就会生成一个桥接文件
桥接文件.png
当你需要在swift中调用OC的类的时候,就需要在桥接文件中引入该类的头文件
引入OC类的头文件.png
在Person.h 文件中我们写了两个实例方法和一个类方法
#import <Foundation/Foundation.h>
@interface Person : NSObject
// 实例方法
- (void)drinkWater;
- (void)saySomethig:(NSString *)str;
// 类方法
+ (void)eat;
@end
在SwiftViewController中使用Person类并调用Person的一些方法
class SwiftViewController: UIViewController {
@objc var name = ""
var userId = ""
override func viewDidLoad() {
let person = Person()
// 实例方法
person.drinkWater()
person.saySomethig("hello")
// 类方法
Person.eat()
}
@objc func changeText(detail: String) -> String {
return detail + "iPhoneX"
}
}
另外在Swift中使用OC的第三方的框架的时候直接引用即可,不需要再用桥接
第三方引用.png
一、OC调用Swift
这在OC里面使用Swift时, 在这个.m下要导入系统的头文件:#import "工程名-Swift.h"(前面说过这个是系统自动生成)
当我们在ViewController.m文件中需要使用swift类时候,只需要引入Water-Swift.h头文件就行
#import "ViewController.h"
#import "Water-Swift.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
SwiftViewController *swiftVC = [[SwiftViewController alloc] init];
swiftVC.name = @"测试";
NSString *buyStr = [swiftVC changeTextWithDetail:@"买个"];
NSLog(@"%@", buyStr);
}
- Swift 3.2暴露给OC的属性和方法不需要添加@objc,但是4.0需要。