【发布时间】:2014-07-01 18:45:48
【问题描述】:
我需要一个静态变量来保存枚举类型,以便其他类访问和更改。目前我可以访问它的值,但是当我尝试更改它时,不会存储新值。它声明的类没有被实例化。
这是枚举声明:
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。你一定在某个地方犯了一些简单的错误。您引用的代码运行良好
-
我的 Nil-Sense 有点刺痛。
-
@Chuck 但这些是类方法。一个类不能为零
-
@AndreyChernukha:你认为指向一个类的变量可以是 nil。确实,以对类的 nil 引用结束需要一些不寻常的选择,但这已经是一种奇怪的设计,很明显 something 奇怪的事情发生在这里(据报道)恰好像空引用一样工作。
-
@user2576824:鉴于没有人可以从您在此处提供的代码中重现此问题,因此需要提供更好的代码示例,如果您愿意,人们可以使用任何人都可以告诉你发生了什么事。
标签: objective-c enums static-members