Objective C - XCode无法识别if语句之外的变量

时间:2012-01-24 15:23:41

标签: objective-c xcode cocos2d-iphone scope

尝试使用if语句设置sprite文件名,然后根据该字符串加载正确的文件。看起来我的变量范围存在问题,但我不知道它是什么。

这是我的代码:

if ([[GameManager sharedGameManager] newHighScore] == TRUE) {
    NSString *highScoreLabelText = @"label-new-high-score.png"
} else {
    NSString *highScoreLabelText = @"label-high-score.png"
}

CCSprite *highScoreLabel = [CCSprite spriteWithSpriteFrameName:highScoreLabelText];
[highScoreLabel setAnchorPoint:ccp(0,0)];
[highScoreLabel setPosition:ccp(20, winSize.height * 0.575f)];
[self addChild:highScoreLabel];

XCode正在标记错误,说highScoreLabelText是未声明的标识符,因此不会编译应用程序。我是否需要在NSString中声明其他内容以使其余代码与变量一起使用?

2 个答案:

答案 0 :(得分:10)

这是因为您在if的两个分支中声明了两个单独的内部范围变量。这两个变量都不在其范围之外,因此您会收到错误。

您应该将声明移出if,如下所示:

NSString *highScoreLabelText;
if ([[GameManager sharedGameManager] newHighScore] == TRUE) {
    highScoreLabelText = @"label-new-high-score.png"
} else {
    highScoreLabelText = @"label-high-score.png"
}

现在highScoreLabelText语句可以看到if

答案 1 :(得分:3)

在if-else语句

之外声明局部变量