我在SomeClass.h中有一个常量定义的类:
extern NSString *const SCImportantString;
@interface SomeClass
@end
并在SomeClass.m中分配:
NSString *const SCImportantString = @"All your base are belong to us.";
@implementation SomeClass
@end
有没有办法通过名称字符串访问此extern常量?我知道使用valueForKey:
方法可以使用类和即时变量。
使用不同的构建配置时,这样做非常有用。
答案 0 :(得分:2)
如果得到你所说的没有内置方法从字符串中获取const指针值...所以没有NSConstantFromName(@“xy)
你可以自己做吧
NSString *const SCConstantByName(NSString *name) {
if[(name isEqualToString:@"SCImportantString"])
return SCImportantString;
}
或者许多人都有静态字典...就像本地化也可以工作:
NSString *const SCConstantByName(NSString *name) {
id dict = nil;
if(!dict) {
dict = @{@"SCImportantString", SCImportantString};
return dict[name];
}