2

我在 SomeClass.h 中定义了一个类外常量:

extern NSString *const SCImportantString;

@interface SomeClass

@end

并在 SomeClass.m 中赋值:

NSString *const SCImportantString = @"All your base are belong to us.";

@implementation SomeClass

@end

有没有办法通过带有名称的字符串来访问这个外部常量?我知道使用该valueForKey:方法可以使用类和即时变量。

在使用不同的构建配置时这样做会变得非常有用。

4

1 回答 1

2

如果得到你所说的,没有内置的方法可以从字符串中获取 const 指针值......所以没有 NSConstantFromName(@"xy)

你可以自己做

NSString *const SCConstantByName(NSString *name) {
    if[(name isEqualToString:@"SCImportantString"])
        return SCImportantString;
}

或者对于许多人来说有一个静态的字典......就像 localizables 也可以工作:

NSString *const SCConstantByName(NSString *name) {
    id dict = nil;
    if(!dict) {
        dict = @{@"SCImportantString", SCImportantString};

    return dict[name];
}
于 2012-12-14T17:21:32.700 回答