如何在Objective-C中在运行时引用实例属性

时间:2011-03-28 11:49:27

标签: objective-c dynamic runtime properties instance

Flash Actionscript开发人员可以在运行时引用实例属性。我想知道在Objective-C中是否存在类似的东西

在动作中我们可以做到:

var thisObject;
for (var i=0; i<10; i++) {
   thisObject = this["myInstanceProperty"+i];
   thisObject.doSomething();
}

我以为在Objective-C中会有类似的方法,但我找不到任何提到的东西。我正在寻找以下内容:

for (int i=0; i<10; i++) {
  NSString *buttonName = [NSString stringWithFormat:@"button_%i", i];
  id *thisButton = [self instancePropertyWithStringName:buttonName];
  thisButton.label = @"button %i";
}

你能看到我得到的东西吗?我有一个xib链接视图到IBOutlets,我想在for循环中引用那些IBOutlets,所以我可以在运行时动态地添加属性。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果self对象符合NSKeyValueCoding - 您默认为其实例变量和属性执行此操作,则可以使用以下内容。

NSButton *button = [self valueForKey:buttonName];

答案 1 :(得分:1)

听起来你正在寻找Key-Value Coding Guide