self.x est utilisé pour accéder aux propriétés. Il accède en fait aux méthodes getX ou setX, mais la plupart du temps, le compilateur implémente automatiquement ces deux méthodes pour vous et crée automatiquement une variable d'instance associée, donc vous ne vous sentez pas arriver. _x est la variable d'instance créée automatiquement. Par exemple, vous définissez l'attribut suivant :
@property(nonation, strong) NSString *x;
Il y a un tas de code caché (simplifié) comme suit :
Je suppose que votre code de chargement paresseux surcharge la méthode get de l'attribut. Self.x appelle en fait la méthode [self x] Si vous utilisez self.x dans la méthode get, alors ce self.x Pour appeler le [self. x], c'est une récursivité infinie.
S'il est référencé, il n'y aura pas de différence. C'est le même pointeur. S'il est attribué, il y aura une différence. Self.xx=oo Mettez d'abord xxretaincount -1 puis conservez oo _XX copy pointe directement vers. oo. Il n’y a pas d’étape de conservation. Ni
Ensuite, lorsque vous appelez self.some, cela équivaut à utiliser [self some], et self.some dans some appelle à nouveau [self some]. . . Une boucle se forme. . .
Le trait de soulignement signifie un accès direct, en contournant set et get. .
self.x est utilisé pour accéder aux propriétés. Il accède en fait aux méthodes getX ou setX, mais la plupart du temps, le compilateur implémente automatiquement ces deux méthodes pour vous et crée automatiquement une variable d'instance associée, donc vous ne vous sentez pas arriver. _x est la variable d'instance créée automatiquement.
Par exemple, vous définissez l'attribut suivant :
Il y a un tas de code caché (simplifié) comme suit :
Je suppose que votre code de chargement paresseux surcharge la méthode get de l'attribut. Self.x appelle en fait la méthode [self x] Si vous utilisez self.x dans la méthode get, alors ce self.x Pour appeler le [self. x], c'est une récursivité infinie.
S'il est référencé, il n'y aura pas de différence. C'est le même pointeur. S'il est attribué, il y aura une différence. Self.xx=oo Mettez d'abord xxretaincount -1 puis conservez oo _XX copy pointe directement vers. oo. Il n’y a pas d’étape de conservation. Ni
Je viens de deviner que vous pourriez être :
Ensuite, lorsque vous appelez self.some, cela équivaut à utiliser [self some], et self.some dans some appelle à nouveau [self some]. . . Une boucle se forme. . .
Le trait de soulignement signifie un accès direct, en contournant set et get. .