Parece que estoy recibiendo un nuevo error al usar el Compilador LLVM 2.0, que no he tenido antes.Propiedades de anulación que se ajustan a los protocolos
Tengo un protocolo llamado DTGridViewDelegate definido como:
@protocol DTGridViewDelegate <UIScrollViewDelegate>
tengo una propiedad llamada delegate
on DTGridView (una subclase de UIScrollView, que en sí misma tiene una propiedad delegate
). Esta se define como:
@property (nonatomic, assign) IBOutlet id<DTGridViewDelegate> delegate;
Ahora el mensaje que recibo es:
DTGridView.h:116:63: error: property type 'id<DTGridViewDelegate>' is incompatible with type 'id<UIScrollViewDelegate>' inherited from 'UIScrollView'
Como había dicho que el DTGridViewDelegate se ajusta a UIScrollViewDelegate, pensé que esto estaría bien para anular esta propiedad de esta manera, y de hecho este es el primer compilador que sugiere que hay un problema.
He fijado el error al declarar la propiedad como tal:
@property (nonatomic, assign) IBOutlet id<DTGridViewDelegate, UIScrollViewDelegate> delegate;
Me pregunto si esto es un problema de compilador?
Active las advertencias más estrictas de http://boredzo.org/blog/archives/2009-11-07/warnings usando el guión de Wolf aquí: http://rentzsch.tumblr.com/post/237349423/hoseyifyxcodewarnings-scpt. Lo cual probablemente explica por qué no está viendo la advertencia/error. –
Sin embargo, tiene toda la razón, olvidé UITableViewDelegate, ¡que en primer lugar, deduje ese código!Me parece que la primera forma no debería arrojarle una advertencia. Además, me parece extraño que UITableViewDelegate diga que se ajusta a NSObject cuando también se ajusta a UIScrollViewDelegate, que a su vez se ajusta a NSObject. –
Así que después de un debate adicional con @MikeAbdullah, resulta que necesitaba poner las declaraciones de protocolo antes de la interfaz de clase. El @protocol DTGridViewDelegate no decía que se ajustaba a cuando el compilador alcanzó mi declaración de propiedad. –