我需要一个静态变量,它保存一个枚举类型,供其他类访问和更改。目前我可以访问它的值,但是当我尝试更改它时,不会存储新值。它声明的类没有实例化。
这是枚举声明:
typedef NS_ENUM(NSInteger, weaponType) {
single, dual
};
我在.h文件中声明了一个静态getter和setter:
+(weaponType)shipWeaponType;
+(void)setShipWeaponType:(int)aType;
在.m文件中我有一个静态变量
static weaponType shipWeaponType;
getter和setter实现如下:
+ (weaponType)shipWeaponType {
return shipWeaponType;
}
+ (void)setShipWeaponType:(int)aType {
shipWeaponType = aType;
}
shipWeaponType
总是返回0.我试过让setShipWeaponType
需要实际的枚举类型而不是int,但它没有区别。
非常感谢任何帮助!
答案 0 :(得分:0)
我怀疑你只是错过了一些显而易见的东西,因为你看起来好像应该有效。我刚刚在默认的精灵工具包项目中的一个类中进行了测试,因为我打开了它,并且它有效。这是它的样子:
//======= .h ==========
typedef NS_ENUM(int, testEnumType){
nullType,
oneType,
twoType,
initType,
};
@interface MyScene : SKScene
+(void)setStaticVar:(int)var;
+(testEnumType)getStaticVar;
//========= .m ==============
static testEnumType theStaticVar = initType;
@implementation MyScene
+(void)setStaticVar:(int)var
{
theStaticVar = var;
}
+(testEnumType)getStaticVar
{
return theStaticVar;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[MyScene setStaticVar:oneType];
NSLog(@"the var: %i", [MyScene getStaticVar]); //result is the var: 1
}