简体   繁体   English

在 ZA5084C5B36F309E58B2629BED5212E6 项目中的 Swift 文件中使用 Objective-C Singleton

[英]Using Objective-C Singleton in Swift file within Objective-C project

I've got my project written in Objective-C .我的项目是用Objective-C编写的。 I am learning about bridging.我正在学习桥接。

I bridged successfully Swift into my Objective-C project.我成功地将Swift桥接到我的Objective-C项目中。 I did some VC pushing between Objective-C VC and Swift VC .我在Objective-C VCSwift VC之间做了一些VC推送。 Everything works as it supposed to.一切都按预期进行。

However, I created the reference to my Objective-C NetworkManager (I used Singleton pattern) in my Swift file like that:但是,我在Swift文件中创建了对Objective-C NetworkManager的引用(我使用了 Singleton 模式):

let networkManager = NetworkManager.sharedManager()

For some reason I cannot use methods from it.出于某种原因,我不能使用它的方法。

networkManager.getUserInfo() // .getUserInfo() will not appear!

Just to show you how I've created my NetworkManager as a Singleton.只是为了向您展示我如何将我的 NetworkManager 创建为 Singleton。 I found that solution online and it was quite old, if you have any better solution, I would be more than happy to get some insight:我在网上找到了那个解决方案,它已经很老了,如果你有更好的解决方案,我很乐意得到一些见解:

+ (id)sharedManager {
    static NetworkManager *sharedMyManager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedMyManager = [[self alloc] init];
    });
    return sharedMyManager;
}

-(id)init {
    if (self = [super init]) {
        someProperty = @"Default Property Value";
        self.cache = [[NSCache alloc] init];
    }
    return self;
}

Not sure what is the issue here.不知道这里有什么问题。 Thank you all for the help.谢谢大家的帮助。

For those who may look for the answer in the future.对于那些可能在未来寻找答案的人。

I've been advised to not use id type when bridging with Swift.有人建议我在与 Swift 桥接时不要使用 id 类型。 I've changed:我改变了:

+ (id)sharedManager {

to

+ (NetworkManager *)sharedManager

And now everything works fine.现在一切正常。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM