【问题标题】:Using constant objects in objective-c在objective-c中使用常量对象
【发布时间】:2010-10-22 17:12:00
【问题描述】:

我有一段类似这样的代码:

//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 

这需要像这样完成,因为常量变量必须从配置文件中加载一次。我怎样才能以这种方式使用常量(是的,它必须是常量,因为如果它被改变,它会带来另一组问题..)?

【问题讨论】:

  • 这里有错字吗? Foo 是类变量,所以问题行应该读为myObj = 而不是Foo =

标签: objective-c app-config constants static-initializer


【解决方案1】:

可能有更好的方法,但我的第一个想法是通过额外的指针间接分配它,例如:

MyObject** nonConstObj = (MyObject**)&myObj;
*nonConstObj = [Config get:@"Foo"];

如果是 C++,const_cast&lt;&gt; 将是合适的,但我不确定最常见/等效的 C 习语。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 2010-10-07
    相关资源
    最近更新 更多