我应该在子类的接口文件中重新声明来自非正式协议的方法吗?

Should I redeclare methods from an informal protocol in the interface file of my subclass?

我有一个 class,它是 NSObject 的子class。 NSObject 有一个非正式协议(类别)NSComparisonMethods。现在,当我需要在我的 subclass 中实现该协议的方法时,我应该在那个 subclass 的接口文件中重新声明它们,还是可选的,因为我的 superclass已经申报了吗?

接口是实现和用户之间的契约。一个子类继承了这个契约。所以,确实,似乎没有理由通过在接口中重新提及方法来表示子类的实现。

然而,对我来说,这总是太正式了。方法的语义可以在不违反契约的情况下在子类中改变。我总是重新声明子类中的每个覆盖方法。

在你的情况下,当 NSObject 没有实现方法时,重新声明绝对是正确的方法,因为语义真的改变了。