He creado un protocolo que mis clases necesitan para implementar y, a continuación, un factor fuera cierta funcionalidad común en una clase base, por lo que hizo esto:Cómo evitar la advertencia "aplicación incompleta" en la clase base parcial
@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
De esta forma, en mi código uso una identificación genérica <MyProtocol>.
Las obras de código (siempre que la base no se utiliza directamente), pero el compilador ahoga al final de la aplicación de base con una advertencia:
Incomplete implementation of class Base
¿Hay una manera de evitar esta advertencia o, aún mejor, ¿es una forma más adecuada de obtener este comportamiento de clase base abstracta parcialmente implementado en Objc?
bien, esto al menos impondrá la implementación en las clases más derivadas. Sería bueno tener una advertencia de tiempo de compilación para methos no implementados, sin embargo, pero supongo que no hay manera (?) ¿Hay una forma correcta de hacer esta implementación parcial de la clase Base en Obj-c? – garph0
No realmente. Como otros han notado, Objective-C no tiene clases base abstractas. Cada enfoque que alguna vez utilicé para emularlos solo te lleva a un lugar intermedio. – mipadi