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