Notei métodos marcados como opcionais em vários protocolos definidos no SDK do iPhone, como o UIActionSheetDelegate
protocolo, por exemplo.
Como posso definir um protocolo próprio e definir alguns dos métodos como opcionais?
iphone
objective-c
jpm
fonte
fonte
Se um método em um protocolo estiver marcado como opcional, você deverá verificar se um objeto implementa esse método antes de tentar chamá-lo.
Como exemplo, a visualização do gráfico de setores circulares pode testar o método de título do segmento como este:
O método respondsToSelector: usa um seletor, que se refere ao identificador de um método após a compilação. Você pode fornecer o identificador correto usando a diretiva @selector () e especificando o nome do método.
Se a fonte de dados neste exemplo implementar o método, o título será usado; caso contrário, o título permanecerá nulo.
fonte
@protocol MyProtocol <NSObject>
Protocolos é um conjunto de regras. Podemos criar protocolos como exemplo abaixo:
TestProtocols.h
Implementação:
TestClass.h
TestClass.m
fonte
Use a
@optional
palavra - chave antes da declaração do método para torná-la opcional. Simples assim!fonte
Os protocolos agem da mesma forma que as classes abstratas; portanto, a palavra-chave @optional define os métodos que são opcionais para implementação.
Portanto, no código, someMethod1, someMethod2 e someMethod4 são métodos obrigatórios (devem ser implementados). someMethod3 é opcional - se não implementarmos esse método, o compilador não emitirá nenhum aviso.
fonte