Eu tenho um objeto (um UIViewController) que pode ou não estar em conformidade com um protocolo que defini.
Sei que posso determinar se o objeto está em conformidade com o protocolo e, em seguida, chamar o método com segurança:
if([self.myViewController conformsToProtocol:@protocol(MyProtocol)]) {
[self.myViewController protocolMethod]; // <-- warning here
}
No entanto, o XCode mostra um aviso:
warning 'UIViewController' may not respond to '-protocolMethod'
Qual é a maneira certa de evitar esse aviso? Não consigo lançar self.myViewController
como uma MyProtocol
classe.
fonte
id<MyProtocol> p = (id<MyProtocol>)self.myViewController;
resposta acima - esta resposta e @andy estão corretas, mas a dele é mais correta.UIViewController
comovc
no exemplo em minha resposta e ela for declarada comoid <MyProtocol>
?id
é um problema: gist.github.com/nsforge/7743616Você pode lançá-lo assim:
Isso me abalou um pouco também. Em Objective-C, o protocolo não é o tipo em si, então você precisa especificar
id
(ou algum outro tipo, comoNSObject
) junto com o protocolo que você deseja.fonte
(id)
funciona. Isso é má forma?