我正在编写一个与API通信的类。我首先创建了一个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
我写了几个扩展这个SessionManager
的类。 API中的每个实体都有一个:RestaurantManager
,StreetManager
和AreaManager
。但是,当我使用其中一个而另一个时,它仍会使用第一个。
NSArray *restaurants = [[RestaurantManager sharedManager] getRestaurants];
// restaurants contains all the restaurants
NSArray *streets = [[StreetsManager sharedManager] getStreets];
// streets still contains all the restaurants
关于如何解决此问题的任何想法?
答案 0 :(得分:1)
您应该覆盖子类中的+ (id)sharedManager
方法。否则,它们会转到相同的sharedManager
方法并与相同的static SessionManager
变量进行交互。