Ce n' “@privée” signifie en Objective-C?
Ce n' @private
dire en Objective-C?
- Cette question a été débattue dans le podcast#53! (stackoverflow.blog/2009/05/14/podcast-53)
Vous devez vous connecter pour publier un commentaire.
Ce n' @private
dire en Objective-C?
Vous devez vous connecter pour publier un commentaire.
C'est un modificateur de visibilité—cela signifie que les variables d'instance a déclaré que
@private
ne peut être accédé que par instances de la même classe. Les membres privés ne sont pas accessibles par les sous-classes ou d'autres classes.Par exemple:
Aussi, pour clarifier, les méthodes sont toujours publiques en Objective-C. Il existe des moyens de "cacher" des déclarations de méthode, bien que—voir cette question pour plus d'informations.
Comme htw dit, c'est un modificateur de visibilité.
@private
signifie que le ivar (variable d'instance) ne peut être consulté directement à partir d'une instance de la même classe. Toutefois, cela peut ne pas dire grand-chose pour vous, alors laissez-moi vous donner un exemple. Nous allons utiliser leinit
méthodes de la classes à titre d'exemples, pour des raisons de simplicité. Je vais commenter en ligne pour souligner les éléments d'intérêt.Donc, pour répondre à votre question, @privée protège ivars de l'accès par une instance d'une autre classe. Notez que deux instances de MyFirstClass pourrait accéder à tous les uns et les autres ivars directement; il est supposé que, depuis le programmeur a le contrôle complet sur cette classe directement, il va utiliser cette capacité à bon escient.
@private
dans le modèle d'un objet, il n'est pas si rare plus.@public
,@protected
et@private
{
et}
autour de la@private
,@public
et@protected
modificateurs. Donc, si vous mélangez accès privé avec, disons@property
, les variables qui sont privé doit être déclarée à l'intérieur de son bloc de{ }
et la@property
doit rester à l'extérieur de l'il.@implementation
bloc. Et une fois que vous faites cela, ils sont effectivement privé, peu importe les modificateurs de visibilité, comme ils ne sont même pas visibles à quiconque en dehors de ce fichier.Qu'il est important de comprendre ce que cela signifie quand quelqu'un dit que vous ne pouvez pas accéder à un
@private
variable d'instance. La vraie histoire est que le compilateur vous donnera une erreur si vous tentez d'accéder à ces variables dans votre code source. Dans les précédentes versions de GCC et de XCode, vous obtenez un avertissement au lieu d'une erreur.De toute façon, au moment de l'exécution, tous les paris sont éteints. Ces
@private
et@protected
ivars peut être accédée par un objet d'une classe. Ces modificateurs de visibilité il suffit de le rendre difficile à compiler le code source en code machine qui viole l'esprit de la modificateurs de visibilité.Ne comptez pas sur ivar modificateurs de visibilité pour plus de sécurité! Ils fournissent aucune. Elles sont strictement pour la compilation de l'application de la classe du constructeur souhaite.