Ho un oggetto (un UIViewController) che può o non può essere conforme a un protocollo che ho definito.
So di poter determinare se l'oggetto è conforme al protocollo, quindi chiamare in sicurezza il metodo:
if([self.myViewController conformsToProtocol:@protocol(MyProtocol)]) {
[self.myViewController protocolMethod]; // <-- warning here
}
Tuttavia, XCode mostra un avviso:
warning 'UIViewController' may not respond to '-protocolMethod'
Qual è il modo giusto per evitare questo avviso? Non riesco a lanciare self.myViewController
come MyProtocol
classe.
id<MyProtocol> p = (id<MyProtocol>)self.myViewController;
Questa risposta e @andys sono entrambe corrette, ma la sua è più corretta.