我有一个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。我想念什么?
这些链接没有回答问题:
答案 0 :(得分:1)
问题是您的颜色为零
@objc var color: UIColor?
到
@objc var color: UIColor = UIColor.red
值得一提的是,objective-c不会响应nil的设置,也不会崩溃