我有一个 Swift 类:
@objc
public class MZAActiveState: NSObject {
@objc static let privateSharedInstance = MZAActiveState()
..
@objc
public class func shared() -> MZAActiveState {
return privateSharedInstance
}
@objc var color: UIColor? = .red
}
在我的 Objective-C 类中,我包含了 Swift header (并且在此文件中声明了 Singleton 及其“共享”方法):
#import "SketchWorkshop-Swift.h"
我在方法中引用静态共享实例:
- (void) doSomething:(id)sender
{
[self.colorPickerController setInitialColor:[MZAActiveState shared].color];
}
我没有收到编译器警告或构建错误,但颜色没有设置。如果我在行上放置一个断点并键入:
(lldb) po [MZAActiveState shared].color;
我明白了:
error: use of undeclared identifier ‘MZAActiveState'
我希望能够看到 [MZAActiveState shared],因为它是静态的并且(我相信)暴露给 Objective-C。我错过了什么?
这些链接没有回答问题:
最佳答案
问题是你没有颜色
@objc var color: UIColor?
到
@objc var color: UIColor = UIColor.red
值得一提的是,objective-c 不会响应 nil 设置并且根本不会崩溃
关于objective-c - 如何从 Objective-C 访问我的 Swift 单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51308757/