OC与Swift混编

  1. Swift中调用OC
    在桥架文件OCAndSwift-Bfidging-Header.h或者swiftAndOC-Bfidging-Header.h中导入对应的OC文件

  2. OC中调用Swift

Person.swift

import UIKit

class Person: NSObject {
    var name: String
    var age: Int
    init(name: String,age: Int) {
        self.name = name
        self.age = age
    }
    
}
// 如果变量和方法前不加@objc那么OC在运行时是不可见的所以要用@objc修饰

class Person: NSObject {
   @objc var name: String
   @objc var age: Int
   @objc  init(name: String,age: Int) {
        self.name = name
        self.age = age
    }
    
}

// 在OC的ViewController.m中创建Person对象

ViewController.m

#import "ViewController.h"
// Swift项目中OC文件引用Swift文件 手动导入swiftAndOC-swift.h文件
// OC项目中 OC文件引用Swift文件 手动导入OCAndSwift-Swift.h文件
#import "swiftAndOC-swift.h"

  1. NS_SWIFT_NAME 和 NS_SWIFT_UNAVAILABLE 指令
ViewController.h中

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
- (void)test1 NS_SWIFT_NAME(myTest()); // 在swift中调用myTest()方法
- (void)test2 NS_SWIFT_UNAVAILABLE("请使用myTest"); // 在swift中没有test2方法.

@end
  1. 混编采坑

1.> 对于自定义的类而言,OC的类不能继承自Swift的类,即要混编的OC类不能是Swift类的子类,反过来,需要混编的Swift类可以继承自OC的类.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容