当前位置: 首页 > 面试题库 >

从Objective-C调用Swift Singleton

邢冷勋
2023-03-14
问题内容

我无法从Objective-C访问Swift Singleton。

@objc class SingletonTest: NSObject {

    // swiftSharedInstance is not accessible from ObjC
    class var swiftSharedInstance: SingletonTest {
    struct Singleton {
        static let instance = SingletonTest()
        }
        return Singleton.instance
    }        
}

swiftSharedInstance无法访问。


问题答案:

现在,我有以下解决方案。也许我忽略了一些使我能够直接访问“ swiftSharedInstance”的东西?

@objc class SingletonTest: NSObject {

    // swiftSharedInstance is not accessible from ObjC
    class var swiftSharedInstance: SingletonTest {
    struct Singleton {
        static let instance = SingletonTest()
        }
        return Singleton.instance
    }

    // the sharedInstance class method can be reached from ObjC
    class func sharedInstance() -> SingletonTest {
        return SingletonTest.swiftSharedInstance
    }

    // Some testing
    func testTheSingleton() -> String {
        return "Hello World"
    }

}

然后在ObjC中,我可以获取sharedInstance类方法(在导入xcode生成的swift标头绑定之后)

SingletonTest *aTest = [SingletonTest sharedInstance];
NSLog(@"Singleton says: %@", [aTest testTheSingleton]);


 类似资料:
  • 问题内容: 我正在开发Python / ObjC应用程序,需要从ObjC的Python类中调用一些方法。我已经尝试了几种方法,但都没有成功。 如何从Objective-C调用Python方法? 我的Python类正在Interface Builder中实例化。如何从该实例调用方法? 问题答案: 使用PyObjC。 它包含在Leopard及更高版本中。 它甚至可以与iPython一起使用: ` 要从

  • 问题内容: 我有一个旧的Objective-C项目,我想调用新的Swift函数和对象,我已经创建了文件“ ”和“ ” 对我来说,从Swift调用函数到Objective-C很容易,但是我有一个反向问题。 因此,我创建了一个简单的类“ System.Swift” 现在我尝试按照此处和文件内的文档进行操作 并且已将其导入到Objective-C类中。此时,在我的Objective-C代码的Object

  • 问题内容: 我想使用Cocoa + Objective C创建本机Mac OS X应用程序,但我需要连接到专有数据源,为此,数据源的所有者仅提供Java库。因此,我需要以某种方式将该Java库导入我的项目中,并在其Java类上调用函数(或者在该库周围创建Java包装器,然后从Objective- C调用我的包装器)。 现在,我该怎么做?快速的Google搜索将我引向JNI,但是我没有找到任何好的和

  • 本文向大家介绍Swift调用Objective-C代码,包括了Swift调用Objective-C代码的使用技巧和注意事项,需要的朋友参考一下 最近iOS开发之新编程语言Swift在iOS开发圈内反响比较大,国内外都有很多教程或小示例。 虽然Swift这门语言仍然在不断的进化之中,而且变动还是比较大,苹果公司也不承诺目前所写代码会在将来兼容,但仍挡不住iOS开发者的热情。 为什么要使用Swift调

  • 本文向大家介绍Objective-C语言调用方式,包括了Objective-C语言调用方式的使用技巧和注意事项,需要的朋友参考一下 示例 调用实例方法: 在当前实例上调用实例方法: 调用一个带有参数的方法: 调用类方法:            

  • 我试图使用Xcode5.0Objective-C项目中的libtorrent库,但没有成功。 我使用LLVM5.0从源代码中构建了boost 1.54和libtorrent-rasterbar(最新),没有任何问题。此外,通过MacPorts,我获得了pkg-config以获得libtorrent-rasterbar库的适当cflags。从我的生成设置中,pkgconfig库和cflags的输出为