是否可以从同一项目的Swift类调用目标C应用程序委托方法?

时间:2019-04-27 08:45:41

标签: ios objective-c swift xcode

我正在将我的Swift项目与已经存在的Objective-C代码合并。我需要从目标C应用程序委托中调用Swift类的一些重要方法。我尝试了net中给出的所有方法,但是没有用。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

是的,有可能,但有一些限制。

您只能使用从NSObject继承的具有公共属性并带有@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属性。在command + B之后,您可以通过Assistance编辑器查看生成的网桥头: bridge-header

然后,您应该在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