为什么不使用UTIit方法使用NS_REQUIRES_SUPER?

时间:2014-09-08 17:26:15

标签: ios objective-c clang

可以对很多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;

     

根据编译器的支持,有条件地定义此宏   这个属性。如果编译器不支持宏的属性   扩展到无。

1 个答案:

答案 0 :(得分:0)

因为它是一个相对较新的注释,人们还没有把它应用到(巨大的)api上。