iOS - 无法从Objective-C访问Swift Singleton

5 singleton objective-c ios swift swift4

我无法从Objective-C ViewController 访问我的Swift Singleton类.

Xcode确实识别我的Swift类,它构建,所以我不认为这是一个桥接头问题.

这是我的Swift Singleton类:

@objc class MySingleton : NSObject {

    static let shared = MySingleton()

    private override init() {}
}
Run Code Online (Sandbox Code Playgroud)

然后在我的.m文件中导入此标头:

#import "myProject-Swift.h"
Run Code Online (Sandbox Code Playgroud)

以这种方式使用Singleton:

 MySingleton *testSingleton = [MySingleton shared];
Run Code Online (Sandbox Code Playgroud)

或者这样:

[MySingleton shared];
Run Code Online (Sandbox Code Playgroud)

它确实识别MySingleton类类型,但我无法访问此类的任何函数或属性.

我错过了什么?所有类似的帖子都没有帮助.

编辑:我做了一个测试功能

func testPrint() {
   print("Singleton worked")
}
Run Code Online (Sandbox Code Playgroud)

并在objective-c文件中以这种方式调用它:

[[MySingleton shared] testPrint];
Run Code Online (Sandbox Code Playgroud)

没有已知的选择器'testPrint'实例

Ima*_*Ali 9

在你的Swift Singleton类中,@objc为以下方法添加testPrint():

@objc func testPrint() {
   print("Singleton worked")
}
Run Code Online (Sandbox Code Playgroud)

现在,您从Objective-C类访问该方法:

[[MySingleton shared] testPrint];
Run Code Online (Sandbox Code Playgroud)

  • 好的,你是对的.但我还必须将@objc添加到共享属性中.看起来很奇怪.我认为为全班做这件事就足够了. (2认同)