在一些旧的(ish)Objective-C代码库中,我不小心错放了试图向对象发送消息的左括号。
// I meant to type object = [object someEncodingMethod]
[object = object someEncodingMethod];
这个编译并运行得很好,但是在这一行之后,原始的object
变量没有被修改。实际的代码很容易解决,但我非常好奇这条线甚至意味着什么。
答案 0 :(得分:2)
没有什么特别的花哨。您已将object
的值分配给变量object
,然后向该值发送了一条消息。抛弃被调用方法的返回值。
我相信任何表达式,对于编译器来说,它似乎评估为对象类型在消息发送的发送方位置是合法的。在C中,赋值是一个表达式,用于计算赋值。 (比较,例如,if( 0 != (result = makeABox()) )
,或更靠近主页if(( self = [super init] ))
。)