¿Hay alguna forma de que pueda probar si existe un método en Objective-C?
Estoy tratando de agregar un guardia para ver si mi objeto tiene el método antes de llamarlo.
objective-c
teepusink
fuente
fuente
- forwardInvocation:
).Respuestas:
fuente
También está el mensaje estático instanceRespondToSelector: (SEL) selector Lo llamaría así:
o así:
Esto puede ser útil si desea llamar a un constructor u otro dependiendo de esto (quiero decir, antes de tener la instancia en sí).
fuente
Utilice
respondsToSelector:
. De la documentación :fuente
Estás buscando respondsToSelector: -
Como dice Donal, lo anterior te dice que foo definitivamente puede manejar la recepción del selector de barras. Sin embargo, si foo es un proxy que reenvía la barra a algún objeto subyacente que recibirá el mensaje de barra, entonces respondeToSelector: le dirá NO, aunque el mensaje se reenviará a un objeto que responde a la barra.
fuente
La verificación de selectores con respondsToSelector es normalmente solo para métodos delegados. No debería utilizar forwardInvocation o proxies para los métodos delegados. Si necesita utilizar respondsToSelector en otras situaciones, es posible que desee asegurarse de que no haya una forma más adecuada de diseñar su programa.
fuente