我有一段类似的代码:
//Foo.h
OBJC_EXPORT MyObject *const myObj;
// Foo.m
MyObject *const myObj;
@implementation Foo
+(void) initialize
{
if (self = [Graph class])
{
myObj = [Config get:@"Foo"]; // <--- ERROR! assignment of read-only variable 'Foo'
// ....
}
}
// ....
@end
这需要像这样完成,因为常量变量必须从配置文件中加载一次。我怎样才能以这种方式使用常量(是的,它需要是常量,因为如果它被改变,它将呈现另外一组问题......)?
答案 0 :(得分:1)
可能有更好的方法,但我的第一个想法是通过额外的指针间接分配它,例如:
MyObject** nonConstObj = (MyObject**)&myObj;
*nonConstObj = [Config get:@"Foo"];
如果它是C ++,const_cast<>
是合适的,但我不确定最常见/等效的C语言。