可以对很多UIKit
类进行子类化,但是文档要求某些方法(如果被覆盖)必须确保仍然调用super
。例如:
-[UIViewController viewWillAppear:]
-[UITableViewCell didTransitionToState:]
<every method UIPercentDrivenInteractiveTransition declares>
为什么Apple选择不将NS_REQUIRES_SUPER
附加到这些方法的声明中,因为它们确实“需要超级”?我的第一个想法是向后兼容早期版本的clang,但我认为,在阅读以下clang文档摘录后,即使这不是问题:
请注意,在Foundation X框架提供的OS X和iOS上 方便宏
NS_REQUIRES_SUPER
为此提供语法糖 属性:
- (void)foo NS_REQUIRES_SUPER;
根据编译器的支持,有条件地定义此宏 这个属性。如果编译器不支持宏的属性 扩展到无。
答案 0 :(得分:0)
因为它是一个相对较新的注释,人们还没有把它应用到(巨大的)api上。