Tengo un objeto (un UIViewController) que puede o no cumplir con un protocolo que he definido.
Sé que puedo determinar si el objeto se ajusta al protocolo, luego llamar de forma segura al método:
if([self.myViewController conformsToProtocol:@protocol(MyProtocol)]) {
[self.myViewController protocolMethod]; // <-- warning here
}
Sin embargo, XCode muestra una advertencia:
warning 'UIViewController' may not respond to '-protocolMethod'
¿Cuál es la forma correcta de prevenir esta advertencia? Parece que no puedo elegir self.myViewControllercomo MyProtocolclase.
fuente

id<MyProtocol> p = (id<MyProtocol>)self.myViewController;esta respuesta y @andys son correctas, pero la suya es más correcta.UIViewControllerquevcen el ejemplo de mi respuesta, y se declara comoid <MyProtocol>?ides un problema: gist.github.com/nsforge/7743616Puedes lanzarlo así:
Esto también me desconcertó un poco. En Objective-C, el protocolo no es el tipo en sí, por lo que debe especificar
id(o algún otro tipo, comoNSObject) junto con el protocolo que desea.fuente
(id)funciona. ¿Es eso de mala forma?