Existe alguma maneira de testar se existe um método em Objective-C?
Estou tentando adicionar um guarda para ver se meu objeto tem o método antes de chamá-lo.
objective-c
teepusink
fonte
fonte
- forwardInvocation:
).Respostas:
fonte
Há também a mensagem estática instancesRespondToSelector: (SEL) selector Você o chamaria assim:
ou assim:
Isso pode ser útil se você quiser chamar um construtor ou outro dependendo disso (quero dizer, antes de ter a própria instância).
fonte
Use
respondsToSelector:
. Da documentação :fonte
Você está procurando por respondsToSelector: -
Como Donal disse, o acima indica que foo definitivamente pode receber o seletor de barra. No entanto, se foo for um proxy que encaminha bar para algum objeto subjacente que receberá a mensagem bar, então respondsToSelector: dirá NÃO, mesmo que a mensagem seja encaminhada para um objeto que responde bar.
fonte
Verificar seletores com respondsToSelector normalmente é apenas para métodos delegados. Você não deve usar forwardInvocation ou proxies para métodos delegados. Se você precisar usar respondsToSelector em outras situações, certifique-se de que não haja uma maneira mais apropriada de projetar seu programa.
fonte