Interface privée vs méthode privée - objectif c
Quelle est la différence entre une méthode et une interface privée?
Par exemple, je sais que si vous définissez une méthode de la mise en œuvre et de son interface ne le mentionne pas, il est considéré comme une méthode privée. J'ai vu aussi des choses comme:
@interface Collector()
@property (readonly) NSMutableDictionary *count;
@end
À l'intérieur de l' .m mise en œuvre de fichier.
source d'informationauteur joshim5
Vous devez vous connecter pour publier un commentaire.
@interface Foo()
crée une extension de classe (je corrige la position des mains, des accessoires pour bbum) sur l'interface Toto qui est comme d'autres méthodes ajoutées à l'interface. Certaines personnes utilisent aussi@interafce Foo(Private)
(catégorie) au lieu d'une extension de classe avec()
. C'est plus comme "l'injection" de nouvelles méthodes dans une classe à partir de l'extérieur de la classe.Plaçant cette dans le .m fichier ne cesse d'autres choses de "voir" dans le .h de fichier, mais c'est tout. Fondamentalement, les gens utilisent normalement des catégories ou des extensions de la classe .m fichiers pour spécifier les interfaces privées, mais ils sont également utilisés pour des choses comme UIKit utilise les catégories d'ajouter
row
etsection
méthodes publiques de NSIndexPath. (Cela peut être source de confusion.)Vous n'avez pas vraiment besoin de définir des méthodes privées de cette façon, mais si vous avez une méthode appelée barre qui appelle la méthode foo avant de foo est définie dans le fichier source, vous aurez un avertissement du compilateur quelque chose comme "objet en soi peut ne pas répondre à toto". Vous pouvez se débarrasser de que par définition foo avant de définir bar ou tout autre foo-code d'appel. C'est la même chose avec du C et fonctions.
Comme Ole dit ça ne les empêche pas quelqu'un d'appeler les méthodes privées, il déclare simplement votre intention qu'ils soient privés et provoque le compilateur pour générer le "peut ne pas répondre aux" mises en garde, même si l'importation de l' .h fichier.
MODIFIER
Voir aussi http://www.friday.com/bbum/2009/09/11/class-extensions-explained/ pour une explication des catégories vs les extensions de la classe. Regarde comme les extensions de la classe devrait être plus approprié pour définir les méthodes privées, à partir d'un avertissement du compilateur point de vue, parce que la catégorie de méthodes sont facultatifs. Souhaite que mon livre aurait expliqué ce!
Objective-C n'a pas totalement méthodes privées. La méthode déclarée dans une interface privée dans la section .m fichier est invisible à l'extérieur des appelants, mais il n'est pas privé. Si quelqu'un connaît la signature de la méthode et ignore l'avertissement du compilateur, ils peuvent appeler ça de l'extérieur sans problèmes.