Subclasificar una subclase UIView cargada desde una punta

Tengo una clase,FooView, eso es una subclase deUIView, y cuya vista se carga desde una punta, algo como:

+ (instancetype)viewFromNib
{
    NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"FooView" owner:self options:nil];
    return [xib objectAtIndex:0];
}

La propia punta tiene su Clase personalizada configurada paraFooView en el inspector de identidad.

Esto se crea como:

FooView *view = [FooView viewFromNib];

Esto se comporta como uno esperaría. Sin embargo, cuando FooView se subclasifica como FooSubclassView y se crea una instancia como:

FooSubclassView *view = [FooSubclassView viewFromNib];

view sigue siendo de tipoFooViewnoFooSubclassView.

Swizzling la clase conobject_setClass no soluciona el hecho de que el objeto subyacente es una instancia deFooViewy, por lo tanto, los métodos llamados en la instancia de subclase serán los de la superclase (FooView), noFooSubclassView.

¿Cómo puedo corregir esto para que las subclases sean del tipo correcto, sin tener que crear una nueva punta para cada subclase, o tener que volver a implementar?viewFromNib en cada subclase?

Respuestas a la pregunta(2)

Su respuesta a la pregunta