Table des matières:
Vidéo: 092 — Manipuler des cartes 2025
Bien que vous créiez des classes de vos propres (en particulier les classes de modèles) pour votre application iOS, vous allez souvent vouloir personnaliser le comportement d'une classe de cadre particulier. Vous avez trois façons d'y arriver:
-
Sous-classe
-
Délégation
-
Propriétés déclarées
Sous-classe
Objective-C, comme d'autres langages de programmation orientés objet, vous permet de baser une nouvelle classe sur un classe qui est déjà déclarée. La classe de base est appelée une superclasse ; la nouvelle classe est sa sous-classe . Chaque sous-classe que vous définissez hérite des méthodes et des variables d'instance de sa superclasse.
Certaines classes d'infrastructure devraient être sous-classées. Parmi eux, les contrôleurs de vue, que vous sous-classez pas mal. En fait, certaines classes ne sont jamais instanciées directement: ce sont les classes abstract . Leurs sous-classes peuvent être instanciées directement: Ce sont des instances concrètes .
Presque tous les langages de programmation orientés objet supportent le sous-classement. Cependant, il y a parfois un problème. C'est ce qu'on appelle le problème héritage multiple : c'est quand vous voulez qu'une classe soit une sous-classe de deux classes. Il n'y a pas de problème si les deux sous-classes sont dans la hiérarchie des classes. Vous pourriez avoir une classe appelée structure, une sous-classe appelée structure résidentielle, et une sous-classe de la maison appelée.
Mais que faites-vous si vous voulez que la maison soit une sous-classe à la fois de structure et d'investissement?
Le modèle de délégation
Délégation est un modèle largement utilisé dans les frameworks iOS, si bien que, si vous voulez faire un travail de développement d'applications sérieux, vous allez devoir vous mettre en tête il. En fait, quand vous le comprenez, votre vie deviendra instantanément beaucoup plus facile à gérer.
tel que et en plaçant le code du comportement spécifique au programme dans un objet distinct (délégué). Lorsqu'une requête est faite sur l'objet framework, la méthode du délégué qui implémente le comportement spécifique au programme est appelée automatiquement. Les frameworks iOS s'appuient fortement sur le modèle de délégation.
Par exemple, l'objet UIApplication gère la plupart du travail réel nécessaire pour exécuter l'application.Mais, comme vous l'avez vu, il envoie à votre application déléguer l'application: didFinishLaunchingWithOptions: message pour vous donner l'occasion de créer des objets modèles qui sont uniques à votre application.
Lorsqu'un objet de structure a été conçu pour utiliser des délégués pour implémenter certains comportements, les comportements qu'il requiert (ou qui vous donnent l'option d'implémenter) sont définis dans un protocole
. Les protocoles définissent une interface que l'objet délégué implémente. Dans iOS, les protocoles peuvent être formels ou informels. Les protocoles formels incluent la prise en charge de choses telles que la vérification de type et la vérification de l'exécution pour voir si un objet est conforme au protocole.
Dans un protocole formel, vous n'avez généralement pas à implémenter toutes les méthodes; beaucoup sont déclarés facultatifs, ce qui signifie que vous devez implémenter uniquement ceux qui sont pertinents pour votre application. Avant qu'un protocole formel tente d'envoyer un message à son délégué, l'objet hôte détermine si le délégué implémente la méthode (via un message respondsToSelector:) pour éviter l'embarras de se brancher sur nulle part si la méthode n'est pas implémentée.
Un protocole peut être adopté par n'importe quelle classe tant qu'il implémente les méthodes requises du protocole. Ainsi, en adoptant un ou plusieurs protocoles et en devenant un délégué, une seule classe peut implémenter une fonctionnalité à partir de deux autres classes - elle fournit une approximation de l'héritage multiple.
