Subclasse de uma subclasse UIView carregada de um bico
Eu tenho uma aulaFooView
, isso é uma subclasse deUIView
, e cuja visão é carregada de um bico, algo como:
+ (instancetype)viewFromNib
{
NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"FooView" owner:self options:nil];
return [xib objectAtIndex:0];
}
A ponta em si tem sua classe personalizada definida comoFooView
no Inspetor de Identidade.
Isto é instanciado como:
FooView *view = [FooView viewFromNib];
Isso se comporta como você esperaria. No entanto, quando o próprio FooView é subclasse como FooSubclassView e instanciado como:
FooSubclassView *view = [FooSubclassView viewFromNib];
view
ainda é do tipoFooView
, nãoFooSubclassView
.
Swizzling a classe comobject_setClass
não conserta o fato de que o objeto subjacente é uma instância deFooView
e, portanto, os métodos chamados na instância da subclasse serão os da superclasse (FooView
), nãoFooSubclassView
.
Como posso corrigir isso para que as subclasses sejam do tipo correto, sem precisar criar uma nova ponta para cada subclasse ou ter que reimplementar?viewFromNib
em cada subclasse?