Ios 哪种模式是创建所有控制器共享的已记录ApiClient实例的最佳解决方案

Ios 哪种模式是创建所有控制器共享的已记录ApiClient实例的最佳解决方案,ios,swift,design-patterns,share,Ios,Swift,Design Patterns,Share,在我的应用程序中,我使用这样一种登录到服务器的机制:将用户凭据发布到服务器,在成功的情况下,返回给我签名我未来的API调用所需的令牌。 问题是如何在我的应用程序的所有类之间共享这个令牌(或登录的ApicClient实例) 现在我在每个控制器属性中设置“token”,当执行每个segue时,我必须初始化它,这是太多的锅炉代码,所以我正在寻找解决方案以其他方式共享它。谢谢 如何在我的应用程序的所有类之间共享此令牌(或已登录ApicClient的实例) 创建一个共享实例,它是- 在接收到来自网络请

在我的应用程序中,我使用这样一种登录到服务器的机制:将用户凭据发布到服务器,在成功的情况下,返回给我签名我未来的API调用所需的令牌。 问题是如何在我的应用程序的所有类之间共享这个令牌(或登录的ApicClient实例)

现在我在每个控制器属性中设置“token”,当执行每个segue时,我必须初始化它,这是太多的锅炉代码,所以我正在寻找解决方案以其他方式共享它。谢谢

如何在我的应用程序的所有类之间共享此令牌(或已登录ApicClient的实例)

  • 创建一个
    共享实例
    ,它是-
    • 在接收到来自网络请求的成功令牌时初始化
    • 当不再需要它所持有的属性(成功令牌)时销毁
实现这一点的一些示例代码:

// APIHelper.h

@interface APIHelper : NSObject

@property (nonatomic) NSString *mySuccessToken; // can be any data type

+ (instancetype)sharedInstance;

@end


// APIHelper.m

@implementation APIHelper

+ (instancetype)sharedInstance{
    static dispatch_once_t once;
    static APIHelper *sharedInstance;
    dispatch_once(&once, ^{
        sharedInstance = [self new];
    });
    return sharedInstance;
}

@end


// Usage of the APIHelper shared instance
// In the function responsible for firing the network request


[MyFetchRequestWithSuccess:^{
    ...

    [APIHelper sharedInstance].mySuccessToken = receivedSuccessToken; // update the shared instance with your received success token from the request       

} failure:^{ 
    ... 
}]

您可以创建一个类和一个静态变量,只需调用类名和变量。我如何使用token创建静态变量,这只在运行时才知道?token是什么意思?它只是一个字符串,您必须在api调用中传递它?是的,但它取决于用户名/密码对,由用户输入。您可以使用用户名/密码作为密钥吗?