I have created a protocol that my classes need to implement, and then factored out some common functionality into a base class, so I did this:
@protocol MyProtocol
- (void) foo;
- (void) bar;
@end
@interface Base <MyProtocol>
@end
@interface Derived_1 : Base
@end
@interface Derived_2 : Base
@end
@implementation Base
- (void) foo{
//something foo
}
@end
@implementation Derived_1
- (void) bar{
//something bar 1
}
@end
@implementation Derived_2
- (void) bar{
//something bar 2
}
@end
In this way in my code I use a generic id<MyProtocol>.
The code works (as long as Base is not used directly) but the compiler chokes at the end of the implementation of Base with a warning:
Incomplete implementation of class Base
Is there a way to avoid this warning or, even better, a more proper way to obtain this partially implemented abstract base class behavior in Objc?