在 Swift 应用程序中访问 Objective-C sharedInstance

Accessing an Objective-C sharedInstance in a Swift app

我正在 Swift 中编写一个依赖于 Obj-C 库的应用程序,FRDStravaClient 需要是一个 sharedInstance。实例化 sharedInstance 并在我的应用程序中使用它的最佳方式是什么?

@implementation FRDStravaClient

+(FRDStravaClient *) sharedInstance
{
    static dispatch_once_t once;
    static id instance;
    dispatch_once(&once, ^{
        instance = [[self alloc] init];
    });
    return instance;
}

为了继续前进,我定义了一个结构,因此我有一个引用我的实例的全局变量。但是我读到的所有内容都在谈论全局变量是多么令人厌恶

struct EvilGlobalVars {
    static var stravaClient = FRDStravaClient()
    static var authToken = NSUserDefaults.standardUserDefaults().stringForKey("authToken")
}

如果您如上所述创建了一个 sharedInstance,您可以在 Swift 中的任何地方以 FRDStravaClient.sharedInstance() 的形式访问它。您不需要全局结构。