3

以下のコードセクションで、次の「値渡しの構造体引数に初期化されていないデータが含まれています」というメッセージが表示されます。

for ( int i = 0; i < 48; i++ )
{

    CGPoint posLevel;
    LevelButton* pBtn;
    if ( i >= 0 && i < 24 )
    {
        int nXX = (i % 4 + 1);

        if ( i < [pBtnArray count] )
        {
            posLevel = ccp( (spMask.position.x - mySize.width / 2) + mySize.width / 5 * nXX, 
                           mySize.height - mySize.height / 7 * (i / 4 + 1));
            pBtn = [pBtnArray objectAtIndex:i];
            if ( pBtn != nil )
            {
                [pBtn move:posLevel];
            }

        }

    }

xcodeによって追加された矢印で、これらが役立つ場合??

ここに画像の説明を入力

コメントアウトされたコードが削除されると、ここにはコードがあまりないため、XCode がスローしている問題が何であるかがわかりません。

このエラーを取り除くための助けをいただければ幸いです!

4

1 に答える 1

10

スクリーンショットのコードは次の形式です

CGRect posLevel;
if (mySize.height < 568) {
    posLevel = ...;
}
if (mySize.height >= 568) {
    posLevel = ...;
}
[pBtn move:posLevel];

また、静的アナライザーは、いずれの場合でも最初または 2 番目の if ブロックが実行されることを認識していないようです。青い矢印は、両方の if ブロックが実行されないposLevelフローを示しており、その場合は未定義になります。

if-else を使用して修正できます。

CGRect posLevel;
if (mySize.height < 568) {
    posLevel = ...;
} else {
    posLevel = ...;
}
[pBtn move:posLevel];
于 2013-10-29T21:23:26.390 に答える