Que @private
signifie dans Objective-C?
ios
objective-c
cocoa
private
Jeff Wolski
la source
la source
Réponses:
Il s'agit d'un modificateur de visibilité - cela signifie que les variables d'instance déclarées comme
@private
ne sont accessibles qu'aux instances de la même classe . Les membres privés ne sont pas accessibles par les sous-classes ou autres classes.Par exemple:
De plus, pour clarifier, les méthodes sont toujours publiques dans Objective-C. Il existe cependant des moyens de "masquer" les déclarations de méthode - consultez cette question pour plus d'informations.
la source
Comme l'a dit htw, c'est un modificateur de visibilité.
@private
signifie que l'ivar (variable d'instance) n'est accessible directement qu'à partir d'une instance de la même classe. Cependant, cela ne signifie peut-être pas grand-chose pour vous, alors laissez-moi vous donner un exemple. Nous utiliserons lesinit
méthodes des classes comme exemples, par souci de simplicité. Je commenterai en ligne pour signaler les éléments d'intérêt.Donc, pour répondre à votre question, @private protège les ivars contre l'accès par une instance de toute autre classe. Notez que deux instances de MyFirstClass peuvent accéder directement à tous les ivars respectifs; il est supposé que puisque le programmeur a un contrôle complet direct sur cette classe, il utilisera cette capacité à bon escient.
la source
@private
le modèle pour un objet, il n'est plus si rare.@implementation
bloc. Et une fois que vous faites cela, ils sont effectivement privés quels que soient les modificateurs de visibilité, car ils ne sont même pas visibles par quiconque en dehors de ce fichier.Il est important de comprendre ce que cela signifie lorsque quelqu'un dit que vous ne pouvez pas accéder à une
@private
variable d'instance. La vraie histoire est que le compilateur vous donnera une erreur si vous essayez d'accéder à ces variables dans votre code source. Dans les versions précédentes de GCC et XCode, vous receviez simplement un avertissement au lieu d'une erreur.De toute façon, au moment de l'exécution, tous les paris sont désactivés. Ces objets
@private
et@protected
ivars sont accessibles par un objet de n'importe quelle classe. Ces modificateurs de visibilité rendent difficile la compilation du code source en code machine qui viole l'intention des modificateurs de visibilité.Ne vous fiez pas aux modificateurs de visibilité ivar pour la sécurité! Ils n'en fournissent aucun. Ils sont strictement destinés à l'application au moment de la compilation des souhaits du constructeur de classe.
la source