String 目标c追加字符串cocos2d

String 目标c追加字符串cocos2d,string,cocos2d-iphone,label,append,String,Cocos2d Iphone,Label,Append,您好,我正在编写一个应用程序,我想创建一个字符串 所以我用这个 NSString *scoreString; NSString *cupCakesPassedString; NSString *cupCakes; int cupCakesPassed; int totalCupCakesPerLevel; -(void)spriteMoveFinished:(id)sender { CCSprite *sprite = (CCSprite *)sender; [self removeChil

您好,我正在编写一个应用程序,我想创建一个字符串

所以我用这个

NSString *scoreString;
NSString *cupCakesPassedString;
NSString *cupCakes;
int cupCakesPassed;
int totalCupCakesPerLevel;

-(void)spriteMoveFinished:(id)sender {

CCSprite *sprite = (CCSprite *)sender;
[self removeChild:sprite cleanup:YES];

if (sprite.position.y <= 0) {
    sprite.position = ccp( sprite.position.x,768 );
    score+=5;
    scoreString=[NSString stringWithFormat:@"%i",score];
    [label setString:scoreString];

    cupCakesPassed++;
    cupCakesPassedString=[NSString stringWithFormat:@"%i",cupCakesPassed];
    cupCakes=[[cupCakesPassedString stringByAppendingString:@"/"]stringByAppendingString:totalCupCakes];

    [passingCupCakes setString:cupCakes];
  }
}
如果我这样做

cupCakes=[[cupCakesPassedString stringByAppendingString:@"/"]stringByAppendingString:scoreString];
我在init方法中也有

cupCakes=[[cupCakesPassedString stringByAppendingString:@"/"]stringByAppendingString:totalCupCakes]; 
并且实际上是有效的…直到方法被调用

这些数字可能有误,但仅供测试之用
问题似乎出在字符串totalCupCakes上,因为即使我使用@“test”也可以,但该字符串有什么问题?

如果我理解正确,您所有的问题都是由于未保留的字符串。NSString类的所有
stringWith…
构造函数返回自动删除的对象。在dealloc方法中创建和发布后保留它们


在您的情况下,到调用方法的那一刻,字符串被解除分配,并且不是有效的对象

使用如下字符串方法:

cupcakes = [NSString stringWithFormat:@"%d/%d", cupCakesPassed, totalCupCakes];

使用起来比附加字符串更简单。

像[NSString stringWithFormat:@“%i/%i”、cupCakesPassed、totalCupCakes]这样的字符串不是更简单吗;更容易使用非常感谢您,我正在迈出第一步,我错过了一些显而易见的时刻。请告诉我确切的崩溃消息是什么?我遵循CBredlow的建议。但您是对的,谢谢您的回复。当我开始清理混乱时,我会用属性修复它:D
cupcakes = [NSString stringWithFormat:@"%d/%d", cupCakesPassed, totalCupCakes];