<div dir="ltr">Hi,<div><br></div><div>currently there is no possibility in objective-c to mark a method as "pure virtual" like in C++. I think the "pure-virtual"-construct enables an elegant and clean way to describe and specify APIs, although if it may be a rarely used construct.</div>

<div>A workaround for objective-c is to declare the method within the base-class and add to it's implementation an assertion like assert(false && "has to be implemented by subclasses"). But i think it would be nicer when the compiler gives me a hint that there is something wrong, instead of crashing the app at runtime.</div>

<div><br></div><div>So, with my attached patch I'm introducing an attribute for that case, named objc_pure_virtual_method. It can only be attached to methods of a class-declaration (the other way round: extensions, categories and protocols are excluded). If a subclass does not implement the method, it will cause a warning. If the subclass redeclares the method within it's @interface-declaration and also adds the objc_pure_virtual_method, no warning will be generated. If the call of an init-method to an instance of a class with pure virtual methods is detected, an error is generated.</div>
<div><br></div><div>I'm not sure if the init-call to a subclass of an abstract class, that did not implement all pure virtual methods, should also produce an error, as this case already produces warnings of unimplemented methods - in my eyes, this is sufficient.</div>
<div><br></div><div>Surely there are some issues with my current implementation, as i'm not so sure if i have chosen the right places to add the logic and about the names / warnings i have chosen and I'm happy to hear any suggestion / <a href="http://www.dict.cc/englisch-deutsch/criticism.html" style="font-size:13px;color:black;text-decoration:none;font-family:arial,helvetica,sans-serif">criticism</a>.</div>
</div>