Действительно ли несколько присвоение являются взломом в Obj-C?

Так, у меня есть класс (IKImageView) с набором свойств.

Я знаю что представление setProp: BOOL возвращается пусто. Однако:

BOOL b = view.prop = NO;

кажется, работает. Если у меня была функция f (), который возвращает булевскую переменную, делает любой знает, делает ли это действительно:

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

или

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

или

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

Я спрашиваю потому что, когда я делаю:

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

Я добираюсь "b, 1, прокрутка 0" (Что означает, что setHasHorizontalScroller перестал работать по некоторым причинам, но b установлен правильно),

но:

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

Я добираюсь "b, 0 прокруток, 0"

Это очень сбивает с толку меня. (Кроме того, если кто-либо может сказать мне, как установка свойства к ДА сбои, но затем это преуспевает в установке b... и все же никаких ошибках, подходит...

5
задан Brian Postow 19 January 2010 в 21:44
поделиться

1 ответ

Это делает

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

, было обсуждение этого до отправки недвижимости. Некоторые народные подумали, что это должна быть ошибка компиляции, чтобы избежать двусмысленности.

Возможно, лучше всего избегать конструкции целиком.

5
ответ дан 14 December 2019 в 19:13
поделиться