Objective c 多重分配是Obj-C中的一种攻击吗?

Objective c 多重分配是Obj-C中的一种攻击吗?,objective-c,properties,getter-setter,Objective C,Properties,Getter Setter,所以,我有一个类(IKImageView),它有一系列属性 我知道setProp:BOOL返回void的视图。然而: BOOL b = view.prop = NO; 似乎有效。如果我有一个返回布尔值的函数f(),有人知道这是否真的是: [view setProp:f()]; Bool b = [view getProp]; 或 或 我这样问是因为当我这样做的时候: BOOL b = view.hasHorizontalScroller = YES; NSLog(@"b is %d scro

所以,我有一个类(IKImageView),它有一系列属性

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

BOOL b = view.prop = NO;
似乎有效。如果我有一个返回布尔值的函数f(),有人知道这是否真的是:

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

我这样问是因为当我这样做的时候:

BOOL b = view.hasHorizontalScroller = YES;
NSLog(@"b is %d scroll is %d", b, [view getHasHorizontalScroller]);
我得到“b是1,scroll是0”(这意味着setHasHorizontalScroller由于某种原因失败,但b设置正确)

但是:

我得到“b是0,卷轴是0”

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

它正在执行此操作。)

BOOL TMP = f();
[view setProp: TMP];
BOOL b = TMP;
在属性发布之前,有人对此进行了讨论。一些人认为这应该是一个编译错误,以避免歧义


可能最好完全避免这种构造。

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

a.text = b.text = c.text;
生成此方法调用:

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

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

请提交一个bug。最简单的例子会很有帮助。这是最简单的例子……我在系统附带的IKImageViewDemo中添加了代码……我刚刚提交了一个bug,谢谢你的建议。好吧,这至少解释了发生了什么,如果不是为什么setter失败的话……谢谢。
BOOL TMP = f();
[view setProp: TMP];
BOOL b = TMP;
a.text = b.text = c.text;
// [c text]
// [b setText:]
// [a setText:]