Ios 多次子类化RKObjectManager

Ios 多次子类化RKObjectManager,ios,objective-c,restkit,Ios,Objective C,Restkit,我有一个名为MyObjectManager的子类,它继承自RKObjectManager 在MyObjectManagerI中初始化RestKit(设置基本url等) 然后,我将MyObjectManager子类划分为两个不同的类: UserManager和GameManager。每个都实现不同的功能 首先,我调用UserManager-sharedManager,它工作正常。后来我用相关函数调用了GameManager sharedManager,但我得到了一个“无法识别的选择器发送到实例”错

我有一个名为
MyObjectManager
的子类,它继承自
RKObjectManager
MyObjectManager
I中初始化RestKit(设置基本url等)

然后,我将MyObjectManager子类划分为两个不同的类:
UserManager
GameManager
。每个都实现不同的功能

首先,我调用
UserManager-sharedManager
,它工作正常。后来我用相关函数调用了
GameManager sharedManager
,但我得到了一个“无法识别的选择器发送到实例”错误,因为它将后者称为
用户管理器

我在指南中多次读到,它被接受为RKObjectManager的子类,我遗漏了什么

MyObjectManager实现:

static MyObjectManager *sharedManager = nil;

@implementation MyObjectManager

+ (instancetype)sharedManager {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSString *baseUrl = [NSString stringWithFormat:@"http://ip/api"];
        NSURL *url = [NSURL URLWithString:baseUrl];

        sharedManager = [self managerWithBaseURL:url];
        sharedManager.requestSerializationMIMEType = RKMIMETypeJSON;

        [sharedManager setupRequestDescriptors];
        [sharedManager setupResponseDescriptors];
    });

    return sharedManager;
}

这是因为
RKObjectManager+sharedManager
是一种类方法。它将在第一次调用时实例化共享管理器,然后在进一步调用时返回它。您对
sharedManager
的第一次调用实例化了一个RKObjectManager,对
GameManager sharedManager
的调用返回了相同的实例。此实例属于RKObjectManager类,它不实现GameManager的功能-因此无法识别的选择器发送到实例错误

这对于子类
RKObjectManager
来说是完全可以接受的,但是您可能还应该在
GameManager
中对类方法
+sharedManager
进行子类化,以返回您自己的静态实例,而不是依赖RKObjectManager的静态实例


编辑:根据您的编辑,您应该尝试在
GameManager
中创建子类,以便返回
GameManager
的实例,而不是
RKObjectManager

其中定义了sharedManager函数?为了使用GameManager sharedManager,必须在其类或超类MyObjectManager或RKObjectManager中定义它。