Objective c 用新字符串替换NSString无效

Objective c 用新字符串替换NSString无效,objective-c,cocos2d-iphone,cocos2d-iphone-3,Objective C,Cocos2d Iphone,Cocos2d Iphone 3,我试图通过使用计时器更新字符串的值来每秒替换一个字符串。通常,我可以通过执行以下操作非常轻松地替换NSString myString=[CCLabelTTF labelWithString:varyingParameterLabelString fontName:@Helvetica fontSize:14] 例如,但由于某些原因,它不会更新我的NSString的值。下面是我想做的 @implementation Grid { NSTimer *timeRemainingTimer;

我试图通过使用计时器更新字符串的值来每秒替换一个字符串。通常,我可以通过执行以下操作非常轻松地替换NSString

myString=[CCLabelTTF labelWithString:varyingParameterLabelString fontName:@Helvetica fontSize:14]

例如,但由于某些原因,它不会更新我的NSString的值。下面是我想做的

@implementation Grid
{
    NSTimer *timeRemainingTimer;
    CCLabelTTF *_varyingParameterLabelValue;
}


-(void)setupLabels{
    int timeRemaining = 30;
    varyingParameterLabelValueString = [NSString stringWithFormat:@"%i", timeRemaining];
    timeRemainingTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(decreaseTimeRemaining) userInfo:nil repeats:TRUE];
    _varyingParameterLabelValue = [CCLabelTTF labelWithString:varyingParameterLabelValueString fontName:@"Helvetica" fontSize:20];
[self addChild:_varyingParameterLabelValue];
}


-(void)decreaseTimeRemaining{
    timeRemaining--;
    NSString *timeRemainingString = [NSString stringWithFormat:@"%i", timeRemaining];
    _varyingParameterLabelValue = [CCLabelTTF labelWithString:@"timeRemainingString" fontName:@"Helvetica" fontSize:20];
//Still reads 30 after this runs
}
如果我只是复制并粘贴timer方法的最后一行到setupLabels方法中,它会像普通方法一样更改字符串,但在timer方法内部它不会做任何事情。我已经登录,以确保计时器正在运行,它肯定是。谢谢你的帮助

在decreaseTimeRemaining中,您创建了一个名为timeRemainingString的局部变量,但是您从未使用它来更新标签。此外,您正在创建一个全新的标签,而不是更新现有的标签

-(void)decreaseTimeRemaining{
    timeRemaining--;
    NSString *timeRemainingString = [NSString stringWithFormat:@"%i", timeRemaining];
    [_varyingParameterLabelValue setString:timeRemainingString];
}

不清楚你所说的不喜欢我的代码是什么意思。你能提供更多的细节吗?对不起,如果这是误导,我的意思是它只是没有更新NSStringYeah,我只是用它作为检查。但它甚至不会更新到25,如果我确实输入了timeRemainingString,它也不会更新,我现在使用您给我的代码编辑了它,它给了我一个错误属性“varyingParameterLabelValue”,在类型为“My Class*”的对象上找不到它……尽管我明确地将它添加到了self中。就像我说的,如果我将我的原始代码复制并粘贴到top方法中,它就会工作。但由于某种原因,在计时器运行的另一个方法中,它不…那么,什么是_varyingParameterLabelValue,它是什么属性?这个变量在哪里声明?它在我的类的实现部分声明,名为“Grid”。当我使用“self”时,它指的是“Grid”。