Objective c 目标c赋值中的惰性评估?
如果a为零,将调用doSomeCalculations吗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、 位置=[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")));