按值传递的struct参数包含未初始化的数据

Ric*_*ard 3 xcode objective-c cocos2d-iphone ios

我在下面的代码部分中获得以下"按值传递的struct参数包含未初始化的数据":

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];
            }

        }

    }
Run Code Online (Sandbox Code Playgroud)

随着xcode添加的箭头,如果这些帮助?

在此输入图像描述

删除注释掉的代码后,这里的代码不多,所以我不明白XCode出现了什么问题.

任何帮助删除此错误将不胜感激!

Mar*_*n R 10

屏幕截图中的代码是表单中的代码

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

并且似乎静态分析器无法识别在任何情况下执行第一个或第二个if块.蓝色箭头表示执行两个if块的流程,在这种情况下posLevel将是未定义的.

您可以使用if-else来解决这个问题:

CGRect posLevel;
if (mySize.height < 568) {
    posLevel = ...;
} else {
    posLevel = ...;
}
[pBtn move:posLevel];
Run Code Online (Sandbox Code Playgroud)