如果分配在方形消息传递括号中,则分配有什么作用?

时间:2017-06-15 07:45:20

标签: objective-c

在一些旧的(ish)Objective-C代码库中,我不小心错放了试图向对象发送消息的左括号。

// I meant to type object = [object someEncodingMethod]
[object = object someEncodingMethod]; 

这个编译并运行得很好,但是在这一行之后,原始的object变量没有被修改。实际的代码很容易解决,但我非常好奇这条线甚至意味着什么

1 个答案:

答案 0 :(得分:2)

没有什么特别的花哨。您已将object的值分配给变量object,然后向该值发送了一条消息。抛弃被调用方法的返回值。

我相信任何表达式,对于编译器来说,它似乎评估为对象类型在消息发送的发送方位置是合法的。在C中,赋值是一个表达式,用于计算赋值。 (比较,例如,if( 0 != (result = makeABox()) ),或更靠近主页if(( self = [super init] ))。)