首页 > 解决方案 > Swift 代码不能使用继承自 Swift 类的 Obj-C 类?

问题描述

我有一个在 Swift 中定义的类:

// SwiftClass.swift

@objc
class SwiftClass: NSObject {
  // ...
}

一个 Objective-C 类可以从那个 Swift 类继承:

// ObjCObject.h

#import "MyModule-Swift.h"

@interface ObjCObject: SwiftClass
  // ...
@end

但是,这样做时,我不能再在 Swift 代码中使用该类。

要在 Swift 中使用它,我必须将它添加到桥接头中:

// MyModule-BridgingHeader.h

#import "ObjCObject.h"

因为只有桥接头引用的类对 Swift 代码可见。这会创建一个循环引用,因为桥接头必须在编译 Swift 源代码之前处理,但生成的 Swift 标头 ( MyModule-Swift.h) 仅在编译 Swift 源代码后才存在,因此在处理桥接头时将不存在。

如果只是用于方法参数,我可以使用前向声明,但 Obj-C 类不能从前向声明的类继承。

所以我只是在这里遗漏了一些东西,还是真的可以在 Swift 中使用 Obj-C 类,在 Obj-C 中使用 Swift 类,但是如果它继承自 Swift 类,则不能在 Swift 中使用 Obj-C 类?

标签: objective-cswift

解决方案


推荐阅读