枚举类型作为Objective-C中的静态变量

时间:2014-07-01 18:45:48

标签: objective-c enums static-members

我需要一个静态变量,它保存一个枚举类型,供其他类访问和更改。目前我可以访问它的值,但是当我尝试更改它时,不会存储新值。它声明的类没有实例化。

这是枚举声明:

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,但它没有区别。

非常感谢任何帮助!

1 个答案:

答案 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

}