Agradeceré si alguien puede explicar la lógica detrás de la herencia de protocolos. p.ej. lo que significa lo siguiente (UITableView.h):Comprensión de la herencia de protocolos en Objective-C
@protocol UITableViewDelegate<NSObject, UIScrollViewDelegate>
La siguiente implementación de clase no funciona. Tengo una clase View1 (que hereda UIView), con un protocolo asociado. Tengo otra clase, View2 (que inhertits View1). Ahora quiero heredar el protocolo también. Puede alguien señalarme hacia la dirección correcta.
Clase 1:
@protocol View1Delegate;
@interface View1 : UIView {
id <View1Delegate> delegate;
// . . .
}
@property (nonatomic, assign) id <View1Delegate> delegate; // default nil. weak reference
@end
@protocol View1Delegate <NSObject>
- (void)View1DelegateMethod;
@end
@implementation View1
@synthesize delegate;
// . . .
@end
Clase 2:
@protocol View2Delegate;
@interface View2 : View1 {
id <View2Delegate> delegate;
// . . .
}
@property (nonatomic, assign) id <View2Delegate> delegate; // default nil. weak reference
@end
@protocol View2Delegate <NSObject>
- (void)View2DelegateMethod;
@end
@implementation View2
@synthesize delegate;
// . . .
@end
Gracias por su respuesta. Estoy declarando el protocolo como lo mencionaste, pero el problema al que me enfrento es con la declaración del delegado id <...>; En View1, tengo el delegado id; con su @property asociado y @synthesize. Como estoy heredando View1 en View2, cuando declaro id delagete; con su @property y @synthesize asociados, aparece un error: "Propiedad" delegado "intenta usar ivar 'delegado' declarado en la superclase de 'View2'. ¿Cuál es la forma correcta de manejar esta situación? Consulte las clases de muestra i publicado arriba. –
Mustafa