在Objective-C中,逗号用作语句分隔符时会做什么?

Joe*_*tti 19 objective-c

我正在寻找来自第三方的一些源代码,并且我反复看到一种对我来说不熟悉的语法.基本上他们用逗号分隔语句而不是分号.它编译和工作,但我不明白它在做什么.看起来是这样的

if(url)[url release], url = nil;
Run Code Online (Sandbox Code Playgroud)

并且他们也有时使用它

[url release], url = nil;
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

Don*_*ows 16

与在C和C++中一样,逗号运算符在左侧计算事物,然后在右侧计算事物; 表达式的总值是右侧的值.基本上,这允许单个表达式做两件事(左侧的那个可能是用于副作用,例如方法调用或赋值).是的,语法与函数调用和变量声明中使用的语法有些模糊.

我更喜欢在可能的情况下使用包含多个语句的诚实块.更长,但最终更清洁.更容易调试.