Question

Alors, j'ai une classe (IKImageView) avec un groupe de propriétés.

Je sais que ce point de vue setProp: BOOL retourne void. Cependant:

BOOL b = view.prop = NO;

semble fonctionner. Si j'avais une fonction f () qui retourne un booléen, personne ne sait si cela fait vraiment:

[view setProp:f()];
Bool b = [view getProp];

ou

[view setProp: f()];
Bool b = f();

ou

BOOL TMP = f();
[view setProp: TMP];
BOOL b = TMP;

Je demande parce que quand je fais:

BOOL b = view.hasHorizontalScroller = YES;
NSLog(@"b is %d scroll is %d", b, [view getHasHorizontalScroller]);

Je reçois « b est 1, défilement est 0 » (ce qui signifie que setHasHorizontalScroller échoue pour une raison quelconque, mais b est correctement réglée)

:

BOOL b;
[view setHasHorizontalScroller: YES];
b = [view getHasHorizontalScroller];
NSLog(@"b is %d scroll is %d", b, [view getHasHorizontalScroller]);

Je reçois "b est 0 défilement est 0"

Ceci est très déroutant pour moi. (Aussi, si quelqu'un peut me dire comment le réglage de la propriété YES échoue, mais il réussit à mettre en b ... mais pas d'erreurs venir ...

Était-ce utile?

La solution

Il est fait

BOOL TMP = f();
[view setProp: TMP];
BOOL b = TMP;

On a discuté de cela avant les propriétés expédiés. Certains gens pensé que ce devrait être une erreur de compilation pour éviter l'ambiguïté.

Il est sans doute préférable d'éviter la construction entièrement.

Autres conseils

On dirait pas un bug. code suivant:

a.text = b.text = c.text;

produit ces méthodes appels:

// [c text]
// [b setText:]
// [a setText:]

Comme vous pouvez le voir [b text] n'est pas appelé dans cette chaîne: (

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top