1

我的 中有一些游戏数据,我GameStateSingleton不想每次都明确地检索这些数据[[GameStateSingleton sharedMySingleton]getVariable],所以我问自己是否可以做这样的事情:

在我的类的接口文件中,GameLayer我设置了属性和变量,例如sharedHealth.

@interface GameLayer : CCLayer
{
    int sharedHealth;

}
@property (nonatomic,assign) int sharedHealth; 

当然在实现中综合它。

@synthesize sharedHealth;

在 GameLayer 的初始化中,我想做类似的事情:

sharedHealth = [self getCurrentHealth];

并添加相应的方法

-(int)getCurrentHealth{
   int myHealth = [[GameStateSingleton sharedMySingleton]getSharedHealth];
   return myHealth;
}

那可能吗 ?从我的经历来看,我似乎只是崩溃了。我将如何实现我的目标,不必总是调用 long 方法,因为它总是检索相同的变量?必须有一个解决方案...

4

2 回答 2

2

你不需要一个实例变量。你可以写一个这样的快捷函数:

- (int)sharedHealth {
    return [[GameStateSingleton sharedMySingleton] getSharedHealth];
}

无论何时您需要该值,您都可以调用[self sharedHealth].

您也可以改用预处理器宏。只需定义这个:

#define SharedHealth [[GameStateSingleton sharedMySingleton] getSharedHealth]

然后在您需要该值时简单地使用它。

请注意,在 Objective-C 中,您不调用 getter 方法“ getVariable”,而只是调用“ variable”。大多数情况下,这是一个约定,但如果您开始使用KVCKVO,这是您必须遵循的规则。所以最好尽快适应。

于 2012-05-26T12:07:34.603 回答
0

如果这只是您要避免的重复输入,您可以使用旧的 C 方式...

#define GAME_STATE [GameStateSingleton sharedMySingleton]

...接着...

int localValue = [GAME_STATE property];
于 2012-05-26T12:14:43.583 回答