当你用Objective-C编程时,你需要清除你头脑中的虚拟方法之类的东西.你不需要对Objective-C对象调用方法,而是向它们发送消息.对象要么响应消息,要么不响应消息,但由于动态绑定,只有在运行时才能知道这一点.
因此,您可以在基本对象上声明一个方法,而不提供实现,这没有问题(编译器警告除外),但当您直接使用此类方法实例化对象时,您不能启用编译器标记,除非您实际将该消息发送给对象,否则它不会在运行时抛出错误.
创建"虚拟"基类的最佳方法(在我看来)是声明该方法,并为其提供一个引发适当异常的存根实现.