哪种模式将是创建记录的 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:^{
...
}]
我在我的应用程序中使用这种机制来记录到服务器: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:^{
...
}]