Objective c 目标c赋值中的惰性评估?

Objective c 目标c赋值中的惰性评估?,objective-c,variable-assignment,lazy-evaluation,Objective C,Variable Assignment,Lazy Evaluation,如果a为零,将调用doSomeCalculations吗 a、 位置=[self doSomeCalculations]; 我想这是必须的,因为doSomeCalculations可以改变状态,但我不确定。如果位置是一个属性,并且您将语句重写为等效的括号语法,那么您将得到: [a setPosition:[self doSomeCalculations]]; 这里不执行延迟计算。当您认为所有这些括号表达式都转换为函数调用为“代码> ObjcIsMSgsEnter())< /C> >:时,与

如果a为零,将调用doSomeCalculations吗


a、 位置=[self doSomeCalculations];


我想这是必须的,因为doSomeCalculations可以改变状态,但我不确定。

如果
位置
是一个属性,并且您将语句重写为等效的括号语法,那么您将得到:

[a setPosition:[self doSomeCalculations]];
这里不执行延迟计算。当您认为所有这些括号表达式都转换为函数调用为“代码> ObjcIsMSgsEnter())< /C> >:

时,与嵌套函数调用没有任何区别。
底线是,即使
a
nil

是,也要对
[self dosomecalculations]
进行评估。您正在分配的任何
[self doSomeCalculations]
将返回到
a.position
,无论它是否为零

此外,这可能取决于您是否为职位编写了自己的访问者,但如果您使用了
@synthesis
d访问者,则将分配该访问者

objc_msgSend(a, sel_getUid("setPosition:"), objc_msgSend(self, sel_getUid("doSomeCalculations")));