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 に答える