Is it good style to declare methods in .h when they're intended to be overwritten by subclass?-Collection of common programming errors
Related: Is there a way to create an abstract class in Objective C?
Objective-C doesn’t actually have a way to declare a class as abstract. From Apple’s Docs:
Abstract Classes
Some classes are designed only or primarily so that other classes can inherit from them. These abstract classes group methods and instance variables that can be used by a number of different subclasses into a common definition. The abstract class is typically incomplete by itself, but contains useful code that reduces the implementation burden of its subclasses. (Because abstract classes must have subclasses to be useful, they’re sometimes also called abstract superclasses.)
Unlike some other languages, Objective-C does not have syntax to mark classes as abstract, nor does it prevent you from creating an instance of an abstract class.
The NSObject class is the canonical example of an abstract class in Cocoa. You never use instances of the NSObject class in an application-it wouldn’t be good for anything; it would be a generic object with the ability to do nothing in particular.
The NSView class, on the other hand, provides an example of an abstract class instances of which you might occasionally use directly.
Abstract classes often contain code that helps define the structure of an application. When you create subclasses of these classes, instances of your new classes fit effortlessly into the application structure and work automatically with other objects.
So to answer your question, yes, you need to place the method signature in the header, and should implement the method in the base class such that it generates an error if called, like the related question’s answer states.
You can also use a protocol to force classes to implement certain methods.
However you choose to implement the base class, clearly document in the header, as well as in your documentation, exactly what the class assumes and how to go about sub-classing it correctly.