UITableViewDelegate compartido

Estoy escribiendo una subclase de UITableView y quiero que mi subclase maneje algunos de los métodos UITableViewDelegate antes de pasarlos al delegado "real", así como enviar todos los métodos UITableViewDelegate no implementados por mi subclase.

En la subclase tengo una propiedad privada:

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

que tiene el "delegado real" al que todos los métodos no implementados deben enviar. En mis dos métodos de inicio lo puse

self.delegate = self;

y anulo - (void) setDelegate: (id) como este

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

Luego anulo estos para manejar el reenvío de mensajes

-(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];
    }
}

El problema es que los métodos de delegado no implementados nunca se invocan en la vista de tabla, por lo que no se les da la oportunidad de reenviarse al objeto _trueDelegate.

Traté de buscarlos aquí:

- (BOOL)respondsToSelector:(SEL)aSelector {

}

pero ese método nunca se llama para los métodos UITableViewDelegate aunque atrapa otros métodos muy bien.

Respuestas a la pregunta(1)

Su respuesta a la pregunta