2011-01-17 17 views
6
CAGradientLayer *grad = [CAGradientLayer layer]; 
grad.colors = $array(ColRGBA2(1, 0, 0, 1), ColRGBA2(0, 1, 0, 1), ColRGBA2(0, 0, 1, 1), ColRGBA2(0, 0, 0, 0)); 
grad.startPoint = CGPointMake(0, 0); 
grad.endPoint = CGPointMake(1, 0); 


grad.colors = $array(ColRGBA2(1, 0, 0, 1), ColRGBA2(0, 1, 0, 1), ColRGBA2(0, 0, 1, 1), ColRGBA2(0, 0, 0, 0)); 

en esta frase tienen un signo de dólar ¿qué significa esto? ¿Algún enlace al respecto?¿qué significa el signo de dólar en objetivo-c?

+0

Recomiendo retirar la etiqueta C, esto no es un código válido C. – jrh

Respuesta

12

No es una característica del idioma, estos son intializadores de conveniencia para colecciones que algunas personas usan. Por ejemplo:

$array(foo, bar, baz) 

expande a:

[NSArray arrayWithObjects:foo, bar, baz, nil] 

No estoy seguro de si vale la pena la molestia. Y no tengo un enlace a la biblioteca que proporciona estas macros, tal vez alguien más lo hace?

Por cierto, parece que tendremos literales oficiales para arreglos, diccionarios y algunos otros objetos en Xcode 4.4. Los detalles parecen estar bajo NDA en este momento, pero hay algunos discussion at Hacker News.

+0

veo gracias por su respuesta, es una macro en este código lo encuentro. No especial significa –

+8

Nunca he visto esto en ningún programa de Objective-C. Claramente, fue pensado por un programador de PHP. – JeremyP

+8

Ewwwww .... Tal pérdida para la mantenibilidad a largo plazo. – bbum

Cuestiones relacionadas