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

Which pattern will be best solution for creating instance of logged ApiClient, shared for all controllers

我在我的应用程序中使用这种机制来记录到服务器:POST 用户凭据到服务器,如果成功 return 我需要令牌来签署我的未来 API电话。 问题是如何在我的所有 类 应用程序之间共享此令牌(或已登录 APIClient 的实例)?

现在我在每个控制器中制作 属性 "token" 并且在执行每个 segue 时我必须初始化它,这是太多的锅炉代码,所以我正在寻找解决方案以其他方式分享.谢谢

how to share this token (or instance of logged APIClient) between all classes of my application?

  • 创建一个 shared instance 这是 -
    • 在从网络请求
    • 成功接收到令牌时初始化
    • 当它持有的属性(成功令牌)不再需要时销毁

实现此目的的一些示例代码:

// 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:^{ 
    ... 
}]