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의 모든 개체에 대해 하나 : RestaurantManager
, StreetManager
및 AreaManager
그래도 나는 그 중 하나를 사용하고 다른 하나를 사용할 때, 여전히 첫 번째를 사용할 것입니다.
NSArray *restaurants = [[RestaurantManager sharedManager] getRestaurants];
// restaurants contains all the restaurants
NSArray *streets = [[StreetsManager sharedManager] getStreets];
// streets still contains all the restaurants
해결 방법에 대한 의견이 있으십니까?
클래스 메소드를 대체하지 않는 한, 서브 클래스는 항상 동일한 공유 인스턴스를 사용합니다. – vadian