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

时间:2017-03-03 19:15:09

标签: ios swift design-patterns share

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

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

1 个答案:

答案 0 :(得分:1)

  

如何在我的应用程序的所有类之间共享此标记(或记录的APIClient的实例)?

  • 创建一个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:^{ 
    ... 
}]