Objective-C中的美元符号代表什么意思?

7
 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));   

这个句子中有一个美元符号,这是什么意思?有没有相关链接可以提供?


我建议删除C标签,因为这不是有效的C代码。 - jrh
2个回答

12

这不是语言的一个特性,这些是一些人使用的方便的集合初始化器。例如:

$array(foo, bar, baz)

展开为:

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

我不确定这是否值得麻烦。而且我没有提供这些宏的库链接,也许其他人有?

顺便说一下,在Xcode 4.4中,似乎将为数组、字典和其他一些对象提供官方文字。目前细节似乎受到保密协议的约束,但在Hacker News上有一些讨论


我看到了,谢谢你的回答。在这段代码中,它是一个宏,没有特殊含义。 - 水月年华
8
我从未在任何 Objective-C 程序中看到过这个。很明显,这是由一个 PHP 程序员想出来的。 - JeremyP
我也从未见过这种情况。这非常奇怪。 - Brad Larson
其实如果你为App Store编写代码,这是很奇怪的 :) - Dimitar Marinov

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接