FooView
のサブクラスであるクラスがあり、UIView
そのビューはペン先からロードされます。次のようなものです。
+ (instancetype)viewFromNib
{
NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"FooView" owner:self options:nil];
return [xib objectAtIndex:0];
}
nib 自体にはFooView
、Identity Inspector で Custom Class が設定されています。
これは次のようにインスタンス化されます。
FooView *view = [FooView viewFromNib];
これは、期待どおりに動作します。ただし、FooView 自体が FooSubclassView としてサブクラス化され、次のようにインスタンス化される場合:
FooSubclassView *view = [FooSubclassView viewFromNib];
view
まだタイプFooView
ではありませんFooSubclassView
。
でクラスをスウィズリングしてobject_setClass
も、基礎となるオブジェクトが のインスタンスであるという事実は修正されないためFooView
、サブクラスのインスタンスで呼び出されるメソッドは、FooView
ではなくスーパークラス ( )のメソッドになりますFooSubclassView
。
サブクラスごとに新しいペン先を作成したり、すべてのサブクラスで再実装したりすることなく、サブクラスが正しいタイプになるようにこれを修正するにはどうすればよいviewFromNib
ですか?