Noté métodos marcados como opcionales en varios protocolos definidos en el SDK de iPhone, como el UIActionSheetDelegate
protocolo, por ejemplo.
¿Cómo puedo definir un protocolo propio y establecer algunos de los métodos como opcionales?
iphone
objective-c
jpm
fuente
fuente
Si un método en un protocolo está marcado como opcional, debe verificar si un objeto implementa ese método antes de intentar llamarlo.
Como ejemplo, la vista de gráfico circular podría probar el método de título de segmento como este:
El método respondsToSelector: utiliza un selector, que se refiere al identificador de un método después de la compilación. Puede proporcionar el identificador correcto utilizando la directiva @selector () y especificando el nombre del método.
Si la fuente de datos en este ejemplo implementa el método, se utiliza el título; de lo contrario, el título permanece nulo.
fuente
@protocol MyProtocol <NSObject>
Protocolos es un conjunto de reglas. Podemos crear protocolos como el siguiente ejemplo:
TestProtocols.h
Implementación:
TestClass.h
TestClass.m
fuente
Use la
@optional
palabra clave antes de la declaración de su método para que sea opcional. ¡Simple como eso!fuente
Los protocolos actúan igual que las clases abstractas, por lo que la palabra clave @optional define los métodos que son opcionales para la implementación.
Entonces, en el código, someMethod1, someMethod2 y someMethod4 son métodos obligatorios (deben implementarse). someMethod3 es opcional: si no implementamos este método, el compilador no arrojará ninguna advertencia.
fuente