私の iPhone アプリケーションでは、AFHTTPClient のサブクラスを使用して残りの Web サービスにアクセスしています。すべてのリクエストを API クライアントの 1 つのインスタンスで処理したいので、シングルトン パターンを使用します。
これは、サービスが 1 回限りの URL で実行されている場合にうまく機能します。定数値を使用して URL を設定できます。
アプリケーションの最終バージョンでは、各アプリは企業ネットワークにインストールされる別のサービスと実際に通信します。
したがって、リモート構成からサービス URL を取得します。ここでもシングルトン パターンは適切な選択ですか? アプリの実行中に URL が実際に変更される可能性がある場合、どのようにパラメーター化する必要がありますか?
乾杯
#import "FooAPIClient.h"
#import "AFJSONRequestOperation.h"
static NSString * const kFooAPIBaseURLString = @"http://192.168.0.1";
@implementation FooAPIClient
+ (instancetype)sharedClient {
static FooAPIClient *_sharedClient = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:kFooAPIBaseURLString]];
});
return _sharedClient;
}
- (id)initWithBaseURL:(NSURL *)url {
self = [super initWithBaseURL:url];
if (!self) {
return nil;
}
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
[self setDefaultHeader:@"Accept" value:@"application/json"];
return self;
}
@end