我正在使用AFNetworking。AFNetworking變更基地址
我想手動更改baseURL。
+ (CustomHTTPClient*)sharedClient{
static dispatch_once_t pred;
static CustomHTTPClient *_sharedClient = nil;
NSLog(@"ShareClient %@",_sharedClient);
if (!_sharedClient)
{
_sharedClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:[[NSUserDefaults standardUserDefaults]objectForKey:@"serverURL"]]];
[AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
}
else
{
NSLog(@"Delete ShareClient %@",_sharedClient);
_sharedClient = nil;
_sharedClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:[[NSUserDefaults standardUserDefaults]objectForKey:@"serverURL"]]];
NSLog(@"NEW ShareClient %@",_sharedClient);
[AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
}
return _sharedClient;
}
選項2:
+ (CustomHTTPClient*)sharedClient{
static dispatch_once_t pred;
static CustomHTTPClient *_sharedClient = nil;
dispatch_once(&pred, ^{
_sharedClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:[[NSUserDefaults standardUserDefaults]objectForKey:@"serverURL"]]];
[AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
});
return _sharedClient;
}
選項1:這將創建shareclient每次。所以它會一直使用正確的(新)BaseURL。 選項2:僅調用onces,所以BaseURL將始終保持相同。
定價:使用選項1而不是選項2的含義是什麼?
我也檢查了一些其他答案,但想了解(簡單地說)爲什麼要使用Dispatch_once以及如何讓dispatch_once被多次調用?
謝謝馬克!它應該按照你描述的方式工作!但是,我必須檢查AFJSONRequestSerializer的子類中的其他代碼。 @interface CustomHTTPRequestSerializer:AFJSONRequestSerializer。再次感謝!現在我知道我應該檢查什麼了! – Nitya