Я использую среду Restkit для веб-службы RESTFUL.Конфликт SharedInstance во время вызова метода с другим экземпляром (RestKit)
My Resoucemanager i, e TaskManager и TaskDashboardCountManager конфликтуют. Когда я вызываю метод
[[TaskDashboardCountManager sharedManager] loadTaskCount:^(NSDictionary *task) {}];
Я получаю исключение
'NSInvalidArgumentException', причина: «- [TaskDashboardCountManager loadTask: провал]:
loadTask является метод TaskManager, но он вызывается с помощью TaskDashboardCountManger. как я могу это решить?
**RKObjectManager.h**
@interface AKObjectManager : RKObjectManager
+ (instancetype) sharedManager;
- (void) setupRequestDescriptors;
- (void) setupResponseDescriptors;
@end
**RKObjectManager.m**
static AKObjectManager *sharedManager = nil;
@implementation AKObjectManager
+ (instancetype)sharedManager {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
NSURL *url = [NSURL URLWithString:BASE_DEVELOPMENT_URL];
sharedManager = [self managerWithBaseURL:url];
sharedManager.requestSerializationMIMEType = RKMIMETypeJSON;
/*
THIS CLASS IS MAIN POINT FOR CUSTOMIZATION:
- setup HTTP headers that should exist on all HTTP Requests
- override methods in this class to change default behavior for all HTTP Requests
- define methods that should be available across all object managers
*/
[sharedManager setupRequestDescriptors];
[sharedManager setupResponseDescriptors];
AppDelegate *delegate=(AppDelegate *)[[UIApplication sharedApplication] delegate];
[sharedManager.HTTPClient setDefaultHeader:@"Authorization" value: [NSString stringWithFormat:@"token %@", delegate.key]];
});
return sharedManager;
}
- (void) setupRequestDescriptors {
}
- (void) setupResponseDescriptors {
}
**TaskManager.m**
@implementation TaskManager
+ (id)sharedInstance {
static TaskManager *__sharedInstance=nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
__sharedInstance = [[self alloc] init];
[__sharedInstance setupResponseDescriptors];
});
return __sharedInstance;
}
- (void) loadTask:(void (^)(NSArray *task))success failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure{
});
**#import "TaskDashboardCountManager.h"**
static TaskDashboardCountManager *sharedManager = nil;
@implementation TaskDashboardCountManager
+ (id)sharedInstance {
static TaskDashboardCountManager *__sharedInstance=nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
__sharedInstance = [[self alloc] init];
[__sharedInstance setupResponseDescriptors];
});
return __sharedInstance;
}
- (void) loadTaskCount:(void (^)(NSDictionary *task))success failure:(void (^)(RKObjectRequestOperation *operation, NSError *error))failure{
});
Что они представляют собой подклассы? RestKit уже предлагает общий экземпляр, чтобы вы могли сталкиваться с методами класса – Wain
@interface TaskManager: AKObjectManager –
http://restkit-tutorials.com/code-organization-in-restkit-based-app/ - Я кодирую в соответствии с этим руководство . когда я вызываю [[TaskDashboardCountManager sharedManager] loadTaskCount:^(задача NSDictionary *) { }]; это будет выполняться нормально, но когда я вызываю задачу [[TaskManager sharedManager] load} {}]; Здесь я получаю исключение. sharedManager содержит экземпляр TaskDashboardCountManger. –