2

我想在 ac 样式数组中创建一个常量 CGPoints 数组。

我从这个开始但得到了错误Initializer element is not a compile time constant

static CGPoint locations[5] = 
{
    CGPointMake(180, 180),
    CGPointMake(300, 130),
    CGPointMake(435, 120),
    CGPointMake(470, 230),
    CGPointMake(565, 200),
};

我消除了static可能与此有关的想法,但错误仍然存​​在。

如何创建 CGPoints 数组(更广泛地说,任何类似定义的结构)。


注意:我已经发布了这个问题和答案,部分原因是为了我自己的参考,因为我永远无法记住这一点,并且浪费太多时间从其他来源研究答案。这里希望它可以帮助别人!

4

2 回答 2

3

事实证明,CGPointMake函数调用是“不是编译时间常数”的东西,因此需要将 CGPoints 视为原始结构:

static CGPoint locations[5] = 
{
    (CGPoint){180, 180},
    (CGPoint){300, 130},
    (CGPoint){435, 120},
    (CGPoint){470, 230},
    (CGPoint){565, 200},
};

演员表不是严格要求的,但为了我自己的理智,我会保留它以显示这些数字中的每一个实际上都是 CGPoint 的一部分。这也是有效的:

static CGPoint locations[5] = {
    {180, 180},
    {300, 130},
    {435, 120},
    {470, 230},
    {565, 200},
};
于 2013-09-18T15:06:02.173 回答
0

调用函数始终是运行时活动。数组初始值设定项列表的内容需要在编译时计算。

于 2013-09-18T15:14:16.973 回答