J'apprends actuellement l'Objective-C et j'ai rencontré des méthodes optionnelles dans Protocoles. Mon arrière-plan est C# et peut voir un protocole comme quelque chose de similaire à une interface C#. Si une interface C# représente un contrat, en annonçant une interface, vous dites que vous allez implémenter les méthodes définies. En gardant cela à l'esprit, je ne comprends pas pourquoi vous auriez besoin de définir une méthode optionnelle. Ce n'est pas une insulte ou une tentative de diminuer Objective-C, j'aime Objective-C. Je veux simplement comprendre les avantages de ces méthodes optionnelles, afin de mieux comprendre le langage.Exemples réels de méthodes de protocole @optional
Je serais vraiment reconnaissant si quelqu'un pourrait fournir des scénarios du monde réel (avec un exemple de code) où les méthodes optionnelles sont utiles.
Je pense que je reçois maintenant. Une interface C# est seulement une facette d'un protocole Objective-C. Vous pouvez utiliser un protocole en tant que contrat, mais ces méthodes facultatives constituent une liste de délégués facultatifs qu'un objet peut également choisir de répondre. C'est vraiment intéressant. – kim3er
+1 pour l'utilisation d'un protocole pour documenter les fonctions déléguées –
Je suis entièrement d'accord avec @Tom. Avant Objective-C 2.0, les méthodes déléguées étaient généralement déclarées dans une catégorie sur NSObject pour éviter que n'importe quelle classe voulant être un délégué n'ait à implémenter toutes les méthodes. Les méthodes facultatives dans les protocoles sont une solution beaucoup plus propre qui ne colle pas des tonnes de méthodes sur NSObject, et permet d'éviter les collisions de méthodes. Si seulement Java avait des méthodes d'interface optionnelles, il n'y aurait pas besoin d'hériter de MouseAdapter. Utiliser des classes comme ça sont généralement les quelques fois que j'ai maudit l'héritage unique ... :-) –