所以,我有一个带有一堆属性的类(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是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”
这对我来说非常困惑。 (另外,如果有人能告诉我如何将属性设置为YES失败,但是它成功设置了b ...但是没有出现错误......
答案 0 :(得分:5)
正在做
BOOL TMP = f();
[view setProp: TMP];
BOOL b = TMP;
在物业发货之前已经讨论过这个问题。有些人认为这应该是一个编译错误,以避免歧义。
最好完全避免施工。
答案 1 :(得分:0)
看起来不是一个错误。以下代码:
a.text = b.text = c.text;
生成此方法调用:
// [c text]
// [b setText:]
// [a setText:]
正如您所看到的,在此链中未调用[b text]
:(