2009-12-28 93 views

回答

48

虽然@weichsel是正确的,有一个更好的办法。

用途:

[anObject valueForKey: @"propertyName"]; 

[anObject setValue:value forKey:@"propertyName"]; 

显然,@"propertyName"可以是NSString是在运行时动态组成。

这种技术被称为Key Value Coding,是可可的基础。

为什么这样更好是因为-valueForKey将做什么必须“框”任何类型的属性返回到一个对象。因此,如果属性类型为int,它将返回包含int的NSNumber实例。

这是很容易对付 - performSelector发生适应一个指针的值的存储器类型的工作。

请注意,也有-setValue:forKey:

+0

非常方便!不知道。 – 2009-12-28 15:33:18

2

@synthesize propertyName自动生成getter和setter方法。

编译器生成

  • - (id)propertyName;
  • - (void)setPropertyName;

如果你有一个选择为的NSString,你可以使用performSelector:NSSelectorFromString
例如为:
[object performSelector:NSSelectorFromString(@"propertyName") ...]

+1

您必须使用'performSelector:withObject:'来设置属性。 – 2009-12-28 15:17:48