ios - 如何在 objective-c 中使用 swift 类(不是类的实例)

标签 ios objective-c swift

在主要是 objective-c 的应用程序中使用 swift 代码的所有教程都经历了这个 Apple 文档中提到的过程 https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

但是这种导入xyzProjectName-swift.h文件然后使用的方法

MySwiftClass *swiftObject = [[MySwiftClass alloc] init];
[swiftObject swiftMethod];

要求我创建那个 swift 类的一个实例。是否可以像 [MySwiftClass swiftMethod];

那样直接访问类本身

直到现在我还没有做到这一点。我是否必须以某种方式更改我的 swift 代码才能实现此目的?

最佳答案

刚刚尝试了以下方法:

class MySwiftClass: NSObject {
    static func swiftMethod() -> String {
        return "hello"
    }
}

在 Objective-C 中:

NSLog(@"Received from Swift: %@", [MySwiftClass swiftMethod]);

对我有用——你确定你的swiftMethodstatic,而不是private吗?您也可以尝试在 static func 前面添加 @objc - 如果没有别的,至少它可能会警告您是否有无法访问的原因 objective-C 。

关于ios - 如何在 objective-c 中使用 swift 类(不是类的实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31640012/

相关文章:

ios - 当用户举报帖子时如何向自己发送电子邮件

objective-c - NSStatusItem 右键菜单

ios - 转到另一个 Viewcontroller

swift - 如何在 xcode 中多次运行函数?

Swift:第二次出现 indexOf

swift - 当另一个事件发出时,如何从可观察的事件中提取一个事件

ios - 使用 AVFoundation 录制视频会停止声音

ios - 执行 "END"时sqlite数据库被锁定

ios - [非 A 类型保留] : message sent to deallocated instance, objective-c

objective-c - UIFont fontWithName 返回 nil