Objective c 关于方法在未实现的情况下重写超类中的方法

Objective c 关于方法在未实现的情况下重写超类中的方法,objective-c,Objective C,我有一个包含几个子类的类 它们都重写了一个类方法,但我在超类中没有该方法的具体实现 因为我不能在接口中声明它,但我也需要实现它(以避免调试器警告),所以我想知道是否可以在超类中提供该方法的空实现 我之所以将方法定义添加到超类中,是因为我有一个多目标项目,当前应用程序委托与特定的重写方法一起考虑: [(GenericDelegate *)[NSApp delegate] myMethod]; 谢谢是的,这是一个完美的常规做法。事实上,它有一个名称:“模板方法”。您可以在Cocoa文档中搜索它 你

我有一个包含几个子类的类

它们都重写了一个类方法,但我在超类中没有该方法的具体实现

因为我不能在接口中声明它,但我也需要实现它(以避免调试器警告),所以我想知道是否可以在超类中提供该方法的空实现

我之所以将方法定义添加到超类中,是因为我有一个多目标项目,当前应用程序委托与特定的重写方法一起考虑:

[(GenericDelegate *)[NSApp delegate] myMethod];

谢谢

是的,这是一个完美的常规做法。事实上,它有一个名称:“模板方法”。您可以在Cocoa文档中搜索它

你会发现苹果偶尔也会在自己的代码中这样做。
UIView
中的
drawRect:
方法是第一个想到的方法


所以,不管怎样,是的,如果它适合你的需要,我会去做。例如,请确保仔细考虑协议是否更适合您的需要。

所有方法在objective c中都是虚拟的,“纯”虚拟(如在c++中)函数不存在,因此objective c中的等效方法在超类中需要一个空实现,只是为了消除编译器警告(我不认为有任何其他方法可以这样做)。这没有错。这与您的问题有关。

还有其他选择。请查看此处的答案/讨论: