что означает знак доллара в target-c? - PullRequest
6 голосов
/ 17 января 2011
 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));   

в этом предложении есть знак доллара, что это значит? Какие-либо ссылки на него?

Ответы [ 2 ]

12 голосов
/ 17 января 2011

Это не особенность языка, это удобные инициализаторы для коллекций, которые используют некоторые люди.Например:

$array(foo, bar, baz)

расширяется до:

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

Я не уверен, стоит ли эта проблема.И у меня нет ссылки на библиотеку, которая предоставляет эти макросы, может, кто-то другой делает?

Кстати, похоже, у нас будут официальные литералы для массивов, словарей и некоторых других объектов в Xcode 4.4,Детали, кажется, в настоящее время под NDA, но есть некоторые обсуждение в Hacker News .

2 голосов
/ 19 ноября 2012

Это из библиотеки ConciseKit

https://github.com/petejkim/ConciseKit

...