我正在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")
}
答案 0 :(得分:1)
如果你已经如上所述创建了sharedInstance
,则可以在Swift中的任何地方以FRDStravaClient.sharedInstance()
的形式访问它。您不需要全局结构。