Comment créer un protocole avec des méthodes optionnelles?
133
J'ai remarqué des méthodes marquées facultatives dans plusieurs protocoles définis dans le SDK iPhone, comme le UIActionSheetDelegateprotocole par exemple.
Comment puis-je définir mon propre protocole et définir certaines des méthodes comme facultatives?
Les méthodes de protocole facultatives peuvent être marquées comme facultatives à l'aide du mot clé @optional. Correspondant au mot clé modal @optional, il existe un mot clé @required pour désigner formellement la sémantique du comportement par défaut. Vous pouvez utiliser @optional et @required pour partitionner votre protocole en sections comme bon vous semble. Si vous ne spécifiez aucun mot-clé, la valeur par défaut est @required.
La méthode respondsToSelector: utilise un sélecteur, qui fait référence à l'identifiant d'une méthode après compilation. Vous pouvez fournir l'identifiant correct en utilisant la directive @selector () et en spécifiant le nom de la méthode.
Si la source de données de cet exemple implémente la méthode, le titre est utilisé; sinon, le titre reste nul.
#import "TestClass.h"@implemenationTestClass//optional to implement -(void)testMethodOptional{// Your Code}//required to implement -(void)testMethodRequired{// Your Code}@end
Les protocoles agissent de la même manière que les classes abstraites, de sorte que le mot clé @optional définit les méthodes facultatives pour l'implémentation.
Ainsi, dans le code, someMethod1, someMethod2 et someMethod4 sont des méthodes obligatoires (doivent être implémentées). someMethod3 est facultatif - si nous n'avons pas implémenté cette méthode, le compilateur ne lèvera aucun avertissement.
Si une méthode dans un protocole est marquée comme facultative, vous devez vérifier si un objet implémente cette méthode avant de tenter de l'appeler.
À titre d'exemple, la vue de graphique à secteurs peut tester la méthode du titre du segment comme ceci:
La méthode respondsToSelector: utilise un sélecteur, qui fait référence à l'identifiant d'une méthode après compilation. Vous pouvez fournir l'identifiant correct en utilisant la directive @selector () et en spécifiant le nom de la méthode.
Si la source de données de cet exemple implémente la méthode, le titre est utilisé; sinon, le titre reste nul.
la source
@protocol MyProtocol <NSObject>
Protocols est un ensemble de règles. Nous pouvons créer des protocoles comme l'exemple ci-dessous:
TestProtocols.h
La mise en oeuvre:
TestClass.h
TestClass.m
la source
Utilisez le
@optional
mot - clé avant la déclaration de votre méthode pour la rendre facultative. Aussi simple que cela!la source
Les protocoles agissent de la même manière que les classes abstraites, de sorte que le mot clé @optional définit les méthodes facultatives pour l'implémentation.
Ainsi, dans le code, someMethod1, someMethod2 et someMethod4 sont des méthodes obligatoires (doivent être implémentées). someMethod3 est facultatif - si nous n'avons pas implémenté cette méthode, le compilateur ne lèvera aucun avertissement.
la source