Je lis le code source d'un projet open source et je l'ai rencontré la définition de la catégorie suivante dans un fichier de mise en œuvre:Pourquoi déclarer une méthode dans une catégorie sans l'implémenter?
@interface QCView (Private)
- (void)_pause;
- (void)setClearsBackground:(BOOL)flag;
@end
Au début, je pensais que la méthode setClearsBackground
était étant ajouté à la définition de classe QCView
. Mais quand je recherche dans ce fichier d'implémentation, je ne trouve aucune implémentation d'une méthode setClearsBackground
(bien que ce message soit envoyé à une instance QCView
à quelques endroits dans le fichier). Pourquoi une personne déclarerait-elle une méthode sur une classe de structure comme QCView
, mais ne l'appliquerait nulle part? Ma seule supposition est que c'est un moyen de contourner le compilateur et d'appeler une méthode qui n'est pas déclarée dans le fichier QCView.h
. Mais cela semble peu probable, car comment le développeur pourrait-il savoir qu'une implémentation de cette méthode existe même?
Interface de programmation du système. Essentiellement, toute fonction ou méthode (techniquement) accessible de l'extérieur qui n'est pas explicitement documentée ou prise en charge. –
Réponse géniale, merci. J'ai téléchargé classe-dump et l'ai exécuté sur QuartzComposer.framework et les méthodes ci-dessus apparaissent dans la sortie, donc je pense qu'il est sûr de dire que c'est exactement ce que l'auteur faisait. Merci encore. – erikprice