【问题标题】:Obj-C variable from NSString? [duplicate]来自 NSString 的 Obj-C 变量? [复制]
【发布时间】:2011-06-16 14:15:58
【问题描述】:

可能的重复:
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 的实例?

【问题讨论】:

标签: iphone objective-c ios nsstring


【解决方案1】:

在运行时标识符 myVar 没有任何意义,它被内存中的地址替换。如果您希望能够按名称获取对象,则需要使用NSDictionary 或可变字典,例如

NSDictionary* map = [NSDictionary dictionaryWithObjectsAndKeys: 
                        [[[MyClass alloc] init] autorelease], @"myVar", nil];

然后访问如下:

[map objectForKey: @"myVar"];

【讨论】:

    【解决方案2】:

    如果是实例变量,使用valueForKey:即可。如果它是一个局部变量,那么你就不走运了。如果它是一个全局的,你可以做到,但它是丑陋的、缓慢的并且乞求“为什么?!”的问题。


    您必须提供更多信息来说明您想要做什么。根据定义,局部变量仅在定义它的范围内有效。鉴于此,很难想象在没有更好/更清洁/更简单方法的情况下您需要象征性地访问局部变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-08
      • 2011-08-24
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多