MST

星途 面试题库

面试题:Objective-C与Swift混编中如何处理类的相互调用

在Objective-C与Swift混编项目里,假设Objective-C中有一个`Person`类,Swift中有一个`ViewController`类。请描述如何在`ViewController`中调用`Person`类的方法,以及在`Person`类中如何调用`ViewController`类的方法,并写出关键代码片段。
35.3万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

在Swift的ViewController中调用Objective - C的Person类方法

  1. 创建桥接头文件:如果项目中没有,Xcode会提示创建。假设项目名为MyProject,桥接头文件名为MyProject - Bridging - Header.h
  2. 在桥接头文件中引入Person类头文件
#import "Person.h"
  1. 在ViewController中调用Person类方法
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let person = Person()
        person.someMethod()// 假设Person类有someMethod方法
    }
}

在Objective - C的Person类中调用Swift的ViewController类方法

  1. 生成Swift头文件:Xcode会自动生成一个以项目名命名的头文件,例如MyProject - Swift.h
  2. 在Person类中引入Swift头文件
#import "MyProject - Swift.h"
  1. 在Person类中调用ViewController类方法
#import "Person.h"
#import "MyProject - Swift.h"

@implementation Person
- (void)somePersonMethod {
    ViewController *viewController = [[ViewController alloc] init];
    [viewController someSwiftMethod];// 假设ViewController类有someSwiftMethod方法
}
@end