我正在将我的 Swift
项目与现有的 Objective-C
代码合并。我需要从 Objective C 应用程序委托(delegate)调用 Swift 类的一些重要方法。我尝试了网上给出的所有方法,但没有用。谁能帮帮我吗?
最佳答案
是的,这是可能的,但有一些限制。
只能使用继承自 NSObject、具有 public 属性并用 @objc 标记的类。在 Objective-C 代码中,您应该导入编译器生成的“ProductModuleName-Swift.h”文件。
这是 Swift 类的示例:
import Foundation
@objc public class ExampleClass: NSObject {
@objc public var someInstanceProperty = "Property"
@objc public func someFunction() {
print("Some function")
}
}
请注意,该类继承自 NSObject,并具有 @objc 和公共(public)属性。命令+B后,您可以通过辅助编辑器查看生成的桥头:
然后您应该在 Objective-C 类中导入桥头文件。
#import "ProductModuleName-Swift.h"
然后您可以像任何其他 Objective-C 类一样在 Objective-C 代码中使用 Swift 类:
__auto_type const someClass = [ExampleClass new];
[someClass someFunction];
NSLog(@"%@", someClass.someInstanceProperty);
以下是 Apple 提供的附加信息: Importing Swift into Objective-C
关于ios - 是否可以从同一项目的 Swift 类调用 Objective-C 应用程序委托(delegate)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55878794/