我的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方法,因为它总是检索相同的变量?必须有一个解决方案......
答案 0 :(得分:2)
您不需要实例变量。你可以写一个像这样的快捷函数:
- (int)sharedHealth {
return [[GameStateSingleton sharedMySingleton] getSharedHealth];
}
无论您需要什么价值,都可以致电[self sharedHealth]
。
您也可以使用预处理器宏。只需定义一下:
#define SharedHealth [[GameStateSingleton sharedMySingleton] getSharedHealth]
然后在需要值时使用它。
请注意,在Objective-C中,您不会调用getter方法“getVariable
”,而只需调用“variable
”。大多数情况下这是一个约定,但如果你开始使用KVC或KVO,那么你必须遵循这个规则。因此,最好尽快适应它。
答案 1 :(得分:0)
如果只是你想要避免的重复输入,你可以使用旧的C方式......
#define GAME_STATE [GameStateSingleton sharedMySingleton]
......然后......
int localValue = [GAME_STATE property];