【问题标题】:How can I set an instance variable dynamically?如何动态设置实例变量?
【发布时间】:2011-02-28 22:52:15
【问题描述】:

我可以通过@property 设置实例变量:

SEL s = NSSelectorFromString([NSString stringWithFormat:@"set%@:", property]);
[self performSelector: s withObject: newObject];

但是有没有办法直接动态地设置实例变量?

【问题讨论】:

  • 为什么要这样做?私有实例变量是私有的。您在这里的具体目标是什么?
  • 我想创建基于 xml 文件的 UIImageViews,该文件将在初始化时读取,并带有要加载的坐标和图像名称。但我忘了我只能使用 Xib

标签: iphone objective-c pyobjc


【解决方案1】:

它的效率不如直接使用选择器,但您可以使用 -[setValue:forKey:] 动态设置属性。所以,如果你有一个名为 foo 的属性并且你想将它设置为 @"bar",你可以这样做:

[self setValue:@"bar" forKey:@"foo"];

请记住,由于这只需要对象引用,因此您必须正确地装箱任何原语。所以,如果你有一个名为 foobar 的属性,它接受一个 NSInteger 值,你会这样做:

[self setValue:[NSNumber numberWithInteger:5] forKey:@"foobar"];

【讨论】:

    【解决方案2】:
    [self setValue:newObject forKey:property];
    

    【讨论】:

      猜你喜欢
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-28
      • 2013-05-15
      • 2010-10-24
      • 2016-10-23
      • 2019-01-29
      相关资源
      最近更新 更多