Estoy mirando un código fuente de un tercero y estoy viendo repetidamente una sintaxis que es nueva para mí. Básicamente, están separando las declaraciones con comas en lugar de punto y coma. Compila y funciona, pero no entiendo lo que está haciendo. Parece que por loEn Objective-C, ¿qué hace una coma cuando se usa como un separador de instrucciones?
if(url)[url release], url = nil;
y también usarlo sin el si a veces
[url release], url = nil;
¿Qué está pasando aquí?
Esto no es útil en esta situación y sólo hace que sea más difícil de leer. Donde podría ser útil es si alguna asignación tuviera que suceder con dos variables con una versión, como: var1 = [var2 release], var2 = nil; pero incluso en este caso, un bloque lo haría mucho más limpio, mucho más fácil de leer y mucho más fácil de depurar. –
Estamos de acuerdo con la falta de claridad del primer ejemplo, pero el segundo no es tan malo en una implementación de dealloc, aunque un punto y coma en lugar de una coma podría hacer más o menos lo mismo. Me resulta más fácil de leer para una larga lista de lanzamientos, porque no tiene líneas alternas haciendo dos cosas diferentes. Semánticamente, liberar un objeto y configurarlo en cero son como una sola operación (o deberían serlo si quieres evitar zombis). –