Dans le code suivant:Est-ce que "LValue" ne signifie pas ce que je pense que cela signifie?
_imageView.hasHorizontalScroller = YES;
_imageView.hasVerticalScroller = YES;
_imageView.autohidesScrollers = YES;
NSLog(@"scrollbar? H %p V %p hide %p",
&(_imageView.hasHorizontalScroller),
&(_imageView.hasVerticalScroller),
&(_imageView.autohidesScrollers));
Je reçois l'erreur:
Controller.m:143: error: lvalue required as unary '&' operand
Controller.m:144: error: lvalue required as unary '&' operand
Controller.m:145: error: lvalue required as unary '&' operand
Notez que j'utilise ces variables comme lvalues directement devant les & lignes ...
Comment peut-il se plaindre qu'une valeur n'est pas une lvalue juste après que je lui ai assigné sans erreur? Est-ce que cela a à voir avec les getters/setters magiques que l'objectif C crée?
Je pense que je dois expliquer un contexte d'expliquer pourquoi je suis en train d'obtenir l'adresse:
dans mon précédent post SO, j'ai montré le même code, l'impression% d et de trouver que, après les missions, les propriétés étaient toujours 0 pour une raison quelconque. Donc, j'ai pensé que j'essaierais d'obtenir les adresses des propriétés pour voir où elles sont stockées et peut-être que je peux comprendre pourquoi je ne leur ai pas assigné avec succès, et alors ceci est arrivé. Je pense que, comme les gens l'ont mentionné, oui, c'est probablement quand je fais l'assignation obj-c remplace secrètement cela par un appel au setter (et puis une autre magie parce que dans un autre post SO, quelqu'un d'autre mentionné que
BOOL b = [_imageView setHasVerticleScroller: YES]
échoue, mais
BOOL b = _imageView.hasVerticalScroller = YES;
fonctionne très bien.
Juste curieux, mais pourquoi voulez-vous imprimer l'adresse de mémoire? – swegi
J'essaie de comprendre pourquoi les valeurs sont tous 0 après les affectations, et espéré que savoir où ils étaient aiderait ... –