Quiero subclase UITextView, y enviar un nuevo mensaje al delegado. Entonces, quiero extender el protocolo de delegado. ¿Cuál es la forma correcta de hacer esto?cómo extender un protocolo para un delegado en el objetivo C, luego subclase un objeto para requerir un delegado conforme
Empecé con esto:
interfaz:
#import <Foundation/Foundation.h>
@class MySubClass;
@protocol MySubClassDelegate <UITextViewDelegate>
- (void) MySubClassMessage: (MySubClass *) subclass;
@end
@interface MySubClass : UITextView {
}
@end
aplicación:
#import "MySubClass.h"
@implementation MySubClass
- (void) SomeMethod; {
if ([self.delegate respondsToSelector: @selector (MySubClassMessage:)]) {
[self.delegate MySubClassMessage: self];
}
}
@end
sin embargo, con que me sale la advertencia: '-MySubClassMessage:' not found in protocol(s)
.
Tenía una forma de trabajar donde creé mi propio ivar para almacenar el delegado, luego también almacené el delegado usando [super setDelegate]
pero me pareció incorrecto. tal vez no lo sea
Sé que puedo simplemente pasar la identificación y salir adelante, pero mi objetivo es asegurarme de que el compilador verifique que cualquier delegado que se suministre a MySubClass cumpla con el protocolo MySubClassDelegate.
Para más clairfy:
@interface MySubClassTester : NSObject {
}
@implementation MySubClassTester
- (void) one {
MySubClass *subclass = [[MySubClass alloc] init];
subclass.delegate = self;
}
@end
producirá la advertencia: class 'MySubClassTester' does not implement the 'UITextViewDelegate' protocol
lo quiero para producir la advertencia sobre la no implementación del protocolo 'MySubClassDelegate' en su lugar.
actualizado con más código de ejemplo para aclarar aún más, Brad me dejó más claro que el '' -MySubClassMessage: 'no encontrado en el protocolo' en realidad no indicaba que el compilador estaba comprobando que el delegado era de un tipo correcto . y ese @optional que tuve para MySubClassMessage hizo que la pregunta fuera casi discutible. ;) –