0

我是 Objective-c 的新手,我有一个问题。我不明白我的错误在哪里。

计数器告诉我该值为 0 的次数最多。

我有一个游戏课,柜台在哪里。一段时间后,当游戏停止时,屏幕切换到 End 类。在结束课程中,我想打印出分数。但它不起作用。

Game.h    
@interface Game : CCLayer
{
  int counter;
}    
@property (readwrite, nonatomic) int counter;    
+(int)returnCounter;    
@end  
Game.m    
@implementation Game    
@synthesize counter;    
-(void)methodForMyCounter{
  counter++;
}
    +(int)returnCounter{
return counter;
} 
End.h    
End.m    
@implementation    
-(void)getCounter{
  //here i want to print out the counter    
}
4

2 回答 2

1

counter是类实例的属性,Game因此您要么需要能够访问该实例,要么将计数器移动到GameEnd对象都可以访问的位置。后者我会这样做。

移动counter到您的应用程序委托和@synthesize它。然后你可以在任何你想要的地方使用它:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
int counterValue = [appDelegate counter];
于 2013-05-02T14:51:54.223 回答
0

将 +(int)returnCounter 替换为 -(int)returnCounter 并从您的实例中调用 returnCounter 方法!

Game.h

@interface Game : CCLayer
{
  int counter;
}

@property (nonatomic, assign) int counter;

-(int)returnCounter;

@end


Game.m

@implementation Game

@synthesize counter;

-(void)methodForMyCounter{
  counter += 1;
}

-(int)returnCounter{
return counter;
}



End.h
@interface End : NSObject
{
  Game *_game;
}

End.m

@implementation

-(int)getCounter{
  if(!_game) {
    _game = [[Game alloc] init];
    //[_game retain] //if your are not using ARC
  }
  NSLog(@"%s %d or %d", __FUNCTION__, [_game returnCounter], _game.counter)
  return [_game returnCounter];

}
于 2013-05-02T14:50:30.177 回答