Подтвердить что ты не робот

Почему методы UIKit не используют NS_REQUIRES_SUPER?

Множество классов UIKit можно подклассифицировать, но в документации спрашивается, что определенные методы, если они переопределены, должны быть уверены, что все еще звонят до super. Например:

-[UIViewController viewWillAppear:]
-[UITableViewCell didTransitionToState:]
<every method UIPercentDrivenInteractiveTransition declares>

Почему Apple решила не добавлять NS_REQUIRES_SUPER в объявления этих методов, так как они действительно требуют супер? Моя первая мысль была обратной совместимостью с более ранними версиями clang, но даже это не проблема, я думаю, после прочтения следующей отрывки документации clang:

Обратите внимание, что на OS X и iOS, что Foundation Framework предоставляет удобный макрос NS_REQUIRES_SUPER, который обеспечивает синтаксический сахар для этого Атрибут:

- (void)foo NS_REQUIRES_SUPER;

Этот макрос условно определен в зависимости от поддержки компилятора для этот атрибут. Если компилятор не поддерживает атрибут, макрос расширяется до нуля.

4b9b3361

Ответ 1

Потому что это относительно новая аннотация, и люди не сделали работу, чтобы применить ее к (огромному) api.