小さなプロジェクトに取り組んでいるときに、サブクラスdrawRect:
の1つでカスタム描画を行う必要があることに気付きました。サブクラスのデフォルトの背景色が透明から黒に変更されたことに上書きしたときに気づきました(デフォルトの背景色とは、プロパティがnilのときにビューが描画する色を意味UIView
します)。この動作。drawRect:
UIView
backgroundColor
drawRect:
drawRect:
[super drawRect:]
オーバーライドされているかどうかに関係なく、単にabackgroundColor
をnil以外の値に設定すると機能するため、これは実際には問題ではありません。drawRect:
しかし、それは私がサブクラスによってオーバーライドされてUIView
いるかどうかをどのように知っているかについて考え始めました。drawRect:
Objective-Cが、クラスまたはそのスーパークラスでさえ特定のセレクターに応答するかどうかを判断する機能を提供していることを私は知っています。しかし、スーパークラスは、そのサブクラスがそのメソッドの1つをオーバーライドしたかどうかをどうやって知ることができるでしょうか?そして、このタイプの内省が実際に不可能である場合、私の例では何が起こっている可能性がありますか?