Hi all! Some languages (like C++ and Visual C#) allow for partial abstract classes (i.e. some methods are implemented, while others are left to subclasses to implement - and, in fact, must implement since the partial abstract class does not). Is there a way to do this in ObjC? Is this why NSObject implements a protocol called NSObject (i.e. to make NSObject a partial abstract class)? Finally, does anyone know of a tool that'll convert VC# (dot net) code to ObjC (modern 2.0 syntax)? Can one forward declare an @protocol? Obviously (IIRC) a pure abstract class would map to a formal protocol in ObjC (or a class interface in languages such as REALbasic/Xojo, or VB 6). My best guess is to:
1) Make an ObjC class, and have it implement those methods that subclasses don't have to override. For those the subclasses must override, implement a stub that raises an exception if a message is sent to it (as ObjC doesn't have an "abstract" keyword). 2) Create a ObjC protocol with the same name as the above class, and copy/paste the method prototypes from the ObjC class' .h file into the protocol's .h file. 3) Go back to the ObjC class, and have it implement its own interface. Ex: Let's say I have a class, MyClass, that has two methods; one has a base implementation (albeit simple), and the other is abstract (i.e. subclasses must implement it). "MyClass.h" @protocol MyClass; // Is this a legal forward protocol declaration? @interface MyClass : NSObject <MyClass> -(void)aSimpleMethod; -(void)subclassesMustImplementMe; @end "MyClassProtocol.h" @protocol MyClass <NSObject> -(void)aSimpleMethod; -(void)subclassesMustImplementMe; @end "MyClass.m" #import <Foundation/Foundation.h> #import "MyClassProtocol.h" #import "MyClass.h" @implementation MyClass -(void)aSimpleMethod { // Subclasses don't have to override me NSLog(@"%@\n", [NSString stringFromClass:[self class]]); } -(void)subclassesMustImplementMe { // Throw an exception here! } @end Is there a better way to implement this than the above? _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com