UITableViewDelegate compartilhado

Estou escrevendo uma subclasse de UITableView e quero que minha subclasse manipule alguns dos métodos UITableViewDelegate em si antes de passá-los para o delegado "real", bem como encaminhar todos os métodos UITableViewDelegate não implementados pela minha subclasse.

Na subclasse eu tenho uma propriedade privada:

@property (nonatomic, assign) id <UITableViewDelegate> trueDelegate;

que detém o "delegado real" que todos os métodos não implementados devem encaminhar para. Em ambos os meus métodos init eu defini

self.delegate = self;

e eu substituir - (void) setDelegate: (id) como este

-(void)setDelegate:(id<UITableViewDelegate>)delegate {
    if (delegate != self) {
        _trueDelegate = delegate;
    } else {
        [super setDelegate:self];
    }
}

Então eu substituí-los para lidar com o encaminhamento de mensagens

-(NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
    NSMethodSignature *sig;
    sig = [[self.delegate class] instanceMethodSignatureForSelector:aSelector];
    if (sig == nil) {
        sig = [NSMethodSignature signatureWithObjCTypes:"@^v^c"];
    }
    return sig;
}

- (void)forwardInvocation:(NSInvocation *)anInvocation {
    SEL selector = anInvocation.selector;
    if ([self respondsToSelector:selector]) {
        [anInvocation invokeWithTarget:self];
    } else {
        [anInvocation invokeWithTarget:_trueDelegate];
    }
}

O problema é que os métodos delegados não implementados nunca são chamados na tableview, portanto, eles não têm a chance de serem encaminhados para o objeto _trueDelegate.

Eu tentei procurar por eles aqui:

- (BOOL)respondsToSelector:(SEL)aSelector {

}

mas esse método nunca é chamado para os métodos UITableViewDelegate embora ele capture outros métodos muito bem.

questionAnswers(1)

yourAnswerToTheQuestion