Obj-C中的多项任务是黑客吗?

Bri*_*tow 5 properties objective-c getter-setter

所以,我有一个带有一堆属性的类(IKImageView).

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

BOOL b = view.prop = NO;
Run Code Online (Sandbox Code Playgroud)

似乎工作.如果我有一个返回布尔值的函数f(),有人知道这是否真的在做:

[view setProp:f()];
Bool b = [view getProp];
Run Code Online (Sandbox Code Playgroud)

要么

[view setProp: f()];
Bool b = f();
Run Code Online (Sandbox Code Playgroud)

要么

BOOL TMP = f();
[view setProp: TMP];
BOOL b = TMP;
Run Code Online (Sandbox Code Playgroud)

我问,因为我这样做:

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

我得到"b是1,滚动是0"(这意味着setHasHorizo​​ntalScroller由于某种原因失败,但b设置正确)

但:

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

我得到"b是0滚动是0"

这对我来说非常困惑.(另外,如果有人可以告诉我如何设置属性为YES失败,但是它成功设置了b ...但是没有错误出现......

小智 5

它正在做

BOOL TMP = f();
[view setProp: TMP];
BOOL b = TMP;
Run Code Online (Sandbox Code Playgroud)

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

最好完全避免施工.