Objective-C: принудительный вызов super при переопределении определенных методов super в подклассе

Мы все знаем, как легко переопределить метод в подклассе и забыть вызвать [super method],

В моем случае у меня есть:

ClassA (framework class, can not be modified)
ClassB (my own class)
ClassC (user's subclass)

ClassA уже предоставляет метод doSomething, Ради того же API я должен переопределить doSomething и потребовать, чтобы ClassC вызвал [super doSomething], если пользователь решит реализовать свою собственную версию doSomething,

Так как эта структура также будет использоваться новичками, я хотел знать, есть ли способы определить, что метод не вызвал свою супер версию, или где, возможно, даже компилятор выдает предупреждение / ошибку, когда пользователь реализует метод, но не делает звони супер.

Я знаю, что это противоречит закону. Это просто для предотвращения ошибки пользователя, потому что отказ от вызова super вызовет проблемы, которые не будут легко прикреплены к отсутствующему вызову super.

Я также знаю, что альтернативой может быть предоставление пользователю другого API (т.е. doCustomSomething) все же я все еще не мог помешать пользователю просто переопределить оригинал doSomething (по привычке) и, таким образом, в обход любого doSomething код добавлен в ClassB. Так что это не будет делать.

Я в основном ищу способы уведомить пользователя о пропущенном [super doSomething], но если есть альтернативные способы действительно обеспечить выполнение doSomething ClassB, когда его суперкласс (ClassA) выполняет doSomething, это тоже будет работать. Я предполагаю, может быть, какой-то непонятный метод swizzling мог бы сработать (опять же, только для того, чтобы обнаружить и выдать ошибку)?

0 ответов

Другие вопросы по тегам