5

所以,我有一个具有一堆属性的类(IKImageView)。

我知道视图 setProp: BOOL 返回 void。然而:

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 is 1, scroll is 0”(这意味着 setHasHorizo​​ntalScroller 由于某种原因失败,但 b 设置正确)

但:

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

我得到“b 是 0 滚动是 0”

这让我很困惑。(另外,如果有人能告诉我如何将属性设置为 YES 失败,但它成功设置 b ......但没有出现错误......

4

2 回答 2

5

它在做

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

在物业发货之前已经讨论过这个问题。有些人认为这应该是一个编译错误以避免歧义。

最好完全避免施工。

于 2010-01-19T21:56:35.840 回答
0

看起来不是bug。以下代码:

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

产生这个方法调用:

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

如您所见[b text],未在此链中调用 :(

于 2015-12-12T21:46:52.857 回答