我正在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()的形式对其进行访问。您不需要全局结构。

10-08 09:14