4
我试图找到一个Objective-C相当于Java的任意枚举类型,或“公共静态最后的”对象,如:Objective-C的相应的Java枚举或“静态最后的”对象
public enum MyEnum {
private String str;
private int val;
FOO("foo string", 42),
BAR("bar string", 1337);
MyEnum(String str, int val) {
this.str = str;
this.val = val;
}
}
或者,
public static final MyObject FOO = new MyObject("foo", 42);
我需要创建为常数(当然),而进口相关的.h文件中,或全球任何地方访问常量。我试过没有成功如下:
了foo.h:
static MyEnumClass* FOO;
Foo.m:
+ (void)initialize {
FOO = [[MyEnumClass alloc] initWithStr:@"foo string" andInt:42];
}
当我做了这一点,并试图用FOO
常量,它有str
和val
变量中没有值。我通过使用NSLog
调用来验证initialize
实际上是被调用的。
另外,即使我在代码的测试块中引用FOO
变量,Xcode在上面显示的.h文件中的行中突出显示了注释'FOO' defined but not used
。
我完全不知所措!谢谢你的帮助!
+1。我会补充一点:你还必须安排调用+ [Foo intialize]。直到发送给Foo的其他消息才会被调用。 [FOO someMessage]不会这样做,因为FOO最初为零。这是我们倾向于使用诸如+ [Foo sharedFoo]之类的东西而不是像这样的全局变量的原因的一部分。 – 2011-03-30 01:15:49