如何从Objective-C访问我的Swift Singleton

时间:2018-07-12 14:53:15

标签: objective-c swift

我有一个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头文件(并且在此文件中声明了Singleton及其“共享”方法):

#import "SketchWorkshop-Swift.h"

并且我在方法中引用了静态共享实例:

- (void) doSomething:(id)sender
{
        [self.colorPickerController setInitialColor:[MZAActiveState shared].color];

}

我没有得到编译器警告或生成错误,但是颜色没有设置。如果在行上放置断点并键入:

  

(lldb)po [MZAActiveState已共享] .color;

我明白了:

  

错误:使用未声明的标识符'MZAActiveState'

我希望能够看到[MZAActiveState shared],因为它是静态的,并且(我相信)暴露于Objective-C。我想念什么?

这些链接没有回答问题:

Related Question

Another Related Question

Here's a Third

1 个答案:

答案 0 :(得分:1)

问题是您的颜色为零

@objc var color: UIColor?

@objc var color: UIColor = UIColor.red

值得一提的是,objective-c不会响应nil的设置,也不会崩溃