Swift与OC混编的总结

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 

@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需要。

你可能感兴趣的:(Swift与OC混编的总结)