objective-c - 如何从 Objective-C 访问我的 Swift 单例

标签 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 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。我错过了什么?

这些链接没有回答问题:

Related Question ,

Another Related Question ,

Here's a Third

最佳答案

问题是你没有颜色

@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/

相关文章:

objective-c - 使用 deleteObject : on Core Data store 时的 EXC_BAD_ACCESS (SIGSEGV)

ios - 如何从 SFSafariViewController 获取 URL?

xcode - Xcode 和 IOS 设备上的栏按钮项目颜色不同

ios - 在 viewWillAppear 中更改字符串时自动换行错误

ios - 在每个单元格都包含表格 View 的表格 View 中选择新单元格时,无法取消选择先前选择的单元格

ios - 以编程方式从 UIBarButtonItem 继续

objective-c - iOS 5 Storyboard : Classes For Each Scene

objective-c - OSX Cocoa - 如何测试多个 NSTextField 中的更改

objective-c - 用于评估字符串的 NSPredicate

ios - Facebook 登录操作表