0
私はAPIと通信するクラスを作成しています。私はSessionManager
を作成することで開始しました:私はこのSessionManager
を拡張するいくつかのクラスを書いたシングルトンのサブクラス化が期待通りに機能しない
@interface SessionManager : AFHTTPSessionManager
+ (id)sharedManager;
@end
static NSString *const kBaseURL = @"https://myapi.com";
@implementation SessionManager
- (id)init {
self = [super initWithBaseURL:[NSURL URLWithString:kBaseURL]];
if(!self) return nil;
self.responseSerializer = [AFJSONResponseSerializer serializer];
self.requestSerializer = [AFJSONRequestSerializer serializer];
return self;
}
+ (id)sharedManager {
static SessionManager *_sessionManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sessionManager = [[self alloc] init];
});
return _sessionManager;
}
@end
。 API内のすべてのエンティティに1つ:RestaurantManager
,StreetManager
およびAreaManager
しかし、私がそれらのうちの1つを使用し、次に使用すると、それは依然として最初のものを使用します。
NSArray *restaurants = [[RestaurantManager sharedManager] getRestaurants];
// restaurants contains all the restaurants
NSArray *streets = [[StreetsManager sharedManager] getStreets];
// streets still contains all the restaurants
これを修正する方法についてのご意見はありますか?
クラスメソッドをオーバーライドしない限り、サブクラスは常に同じ共有インスタンスを使用します。 – vadian