Работая над небольшим проектом, я обнаружил, что мне нужно сделать несколько пользовательских рисунков с помощью drawRect:
в одном из моих UIView
подклассов. Когда я переопределил drawRect:
, я заметил, что цвет фона по умолчанию подкласса UIView
изменился с прозрачного на черный (по умолчанию цвет фона я имею в виду цвет, который отображает представление, когда его свойство backgroundColor
равно nil.) пустой drawRect:
или drawRect:
, который просто вызывает [super drawRect:]
Я заметил это поведение.
Это на самом деле не проблема, так как простая установка backgroundColor
в ненулевое значение работает независимо от того, переопределена ли drawRect:
. Тем не менее, это заставило меня задуматься о том, как UIView
знает, переопределен ли drawRect:
подклассом. Я знаю, что Objective-C предлагает средства, чтобы определить, отвечает ли класс или даже его суперкласс определенному селектору. Но как мог суперкласс узнать, переопределил ли его подкласс один из своих методов? И, если этот тип самоанализа действительно невозможен, что может происходить в моем примере?