可能重复:
Get an ivar or property from a NSString
Remove @“” from NSString or typecast NSString into variable name
让我说我有:
MyClass *myVar = [[MyClass alloc] init];
我有NSString *myString = @"myVar";
有没有办法根据我的字符串检索var的实例?
答案 0 :(得分:3)
在运行时,标识符myVar表示什么都没有,它被内存中的地址替换。如果您希望能够按名称获取对象,则需要使用NSDictionary
或可变字典,例如。
NSDictionary* map = [NSDictionary dictionaryWithObjectsAndKeys:
[[[MyClass alloc] init] autorelease], @"myVar", nil];
然后访问如下:
[map objectForKey: @"myVar"];
答案 1 :(得分:0)
如果是实例变量,只需使用valueForKey:
即可。如果它是一个局部变量,那你就不走运了。如果它是一个全球性的,你可以做到,但它是丑陋的,缓慢的并且乞求“为什么?!”的问题。
您必须提供有关您要执行的操作的更多信息。根据定义,局部变量仅在定义它的范围内有效。鉴于此,很难想象你需要以符号方式访问局部变量而没有更好/更清洁/更简单的方式。