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