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

时间:2015-01-21 18:56:07

标签: ios objective-c swift singleton

我正在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")
}

1 个答案:

答案 0 :(得分:1)

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